home *** CD-ROM | disk | FTP | other *** search
/ A.C.E. 2 / ACE CD 2.iso / FILES / DOCS / REAL3DD.LHA / Real3DPart2.doc < prev    next >
Text File  |  1994-11-27  |  149KB  |  3,675 lines

  1.  
  2.  
  3.  
  4.  
  5.                                 PART 2
  6.              Follow On From Part 1
  7.  
  8.  
  9.  
  10.                              - TUTORIAL 3.2 -
  11.  
  12. Now you have created the second material, marble. It includes a texture
  13. map, which defines the color pattern of marble surface: if you look at
  14. the high column of gadgets at the left side of the material editor, you
  15. can see that only Color map gadget is activated. The tile gadgets were
  16. used to repeat the marble pattern in both x and y directions on the
  17. surface of the object.
  18.  
  19. At this point, you have both shapes and materials created, but there is
  20. still no connection between the two. As it was already mentioned, this
  21. connection is expressed by using the hierarchy tree. You can proceed in
  22. the following way:
  23.  
  24. 14. Select the object ellipsoid.
  25.  
  26. 15. Select function Create/Boolean/OR. This creates a new level and puts
  27.     the sphere under the level.
  28.  
  29. 16. For the sake of clarity, now select the function Modify/Properties/
  30.     Name and type the new name "shiny_sphere" for the new level.
  31.  
  32. 17. Double-click the name shiny_sphere on the select window. You can see
  33.     the original object "sphere" on selection window.
  34.  
  35. 18. Select the function Create/Mapping/Default. The list selector of
  36.     REAL 3D is opened, displaying the names of the materials in the
  37.     material library.
  38.  
  39. 19. Click the material name "shiny" and Click OK.
  40.  
  41. Now the material of the sphere is defined. The hierarchy tree is this:
  42.  
  43.      Root
  44.         cube
  45.         shiny_sphere
  46.           ellipsoid
  47.           shiny(T)
  48.  
  49. The symbol(T) after the name shiny denotes the type of the object as
  50. "mapping". We chose the mapping type Default, because the material shiny
  51. does not require any mapping geometry definition: there are no patterns
  52. painted to the sphere which we would like to position accurately.
  53. The marble texture is different, because you may want to define, for
  54. example, the density (or size) of the marble pattern. To apply the marble
  55. texture, do the following:
  56.  
  57. 20. Select the cube, and use Boolean/OR to create a new level containing
  58.     the cube. Again, you may modify the name of the new level to be
  59.     "marble_obj".
  60.  
  61. 21. Open the new marble obj level by double-clicking on it in the select
  62.     window.
  63.  
  64. 22. Select the function Create/Mapping/parallel.
  65.  
  66. 23. Select the material marble and Click OK.
  67.  
  68. 24. This time, a mapping geometry is needed. The function waits for you
  69.     to shape a rectangle in a view window. Define the rectangle by
  70.     clicking on top left corner and on bottom right corner of it.
  71.     The size of the rectangle that you shape will define the size of the
  72.     first "tile".
  73.  
  74. Now the marble mapping is created; hit return to refresh the display. You
  75. see a new item on select window, "marble (T)", and a rectangle drawn with
  76. a dotted line is visible in the view window.
  77.  
  78. Note:
  79. It is possible to control the wireframe visibility of textures by using
  80. View/Drawing Set function. So, if you do not initially see the dotted
  81. texture rectangle, select View/Drawing Set and make sure that the Mapping
  82. gadget is selected.
  83.  
  84.                              - TUTORIAL 3.3 -
  85.  
  86. The final hierarchical structure of the example is this:
  87.  
  88.      Root
  89.         marble_obj
  90.           cube
  91.           marble(T)
  92.      shiny_sphere
  93.         ellipsoid
  94.         shiny(T)
  95.  
  96. Support example:
  97. Examples/Marble&Shiny.
  98.  
  99. Now it is time to render the scene. Activate the view window you want to
  100. use for rendering, use the arrow keys to find a suitable viewing position,
  101. select View/Render/Settings and set mode to Lampless, accept the rendering
  102. setting by hitting OK and then select View/Render/Window.
  103.  
  104. If you have successfully performed the actions described earlier, you
  105. should get an image where the material properties are clearly visible.
  106. Often, when using parallel texture mapping on cubes, the image can contain
  107. surfaces where the texture pattern looks striped even though that is not
  108. the purpose. This artifact can be avoided by modifying the mapping object
  109. in a suitable way. We can experiment this in the following way:
  110.  
  111. 25. Select the mapping object "marble(T)" using the select window.
  112.  
  113. 26. Activate a view window and hit <RAM>X to get the front view.
  114.  
  115. 27. Select Modify/Linear/Rotate and rotate the mapping rectangle, say, 30
  116.     degrees.
  117.  
  118. 28. Change the viewing direction for example by using <RAM>Y, and rotate
  119.     the mapping again.
  120.  
  121. 29. Experimentally adjust the density of the marble pattern, select
  122.     Modify/Linear/Size and increase the size of the mapping rectangle.
  123.  
  124. Now render a new image; you should see a different result. After rotating
  125. the marble mapping rectangle, it is no longer parallel to any of the sides
  126. of the cube. Therefore, each side gets a nicely varying color pattern.
  127.  
  128. We will now modify this example further in order to demonstrate how the
  129. hierarchy and materials depend on each other. Do the following
  130. modifications:
  131.  
  132. 30. Use the select window to make the level "marble_obj" the current or
  133.     active level.
  134.  
  135. 31. Create a new object, for example a cylinder, under the marble_obj.
  136.  
  137. 32. Go to the level "shiny_sphere", select shiny(T), and select Modify/
  138.     Structure/Cut.
  139.  
  140. 33. Go to the root level, and select Modify/Structure/Paste.
  141.  
  142. Now the hierarchy looks like the following:
  143.  
  144.      Root
  145.         marble obj
  146.         cube
  147.           marble(T)
  148.           cylinder
  149.         shiny_sphere
  150.           ellipsoid
  151.         shiny(T)
  152.  
  153. Support example:
  154. Examples/Marble&Shiny2
  155.  
  156.                              - TUTORIAL 3.4 -
  157.  
  158. You inserted a new cylinder under the marble_obj level, and because there
  159. was already a marble mapping in that level, the cylinder automatically
  160. becomes made of marble. Moving shiny(T) to Root level has such an effect
  161. that shiny material affects all the objects in the hierarchy. The material
  162. of the ellipsoid remains the same, but the cube and the cylinder become
  163. made of a mixture of marble and shiny, which looks like a well polished
  164. marble.
  165.  
  166. 3.1.3 Optical Properties
  167.  
  168. Real world material appearances and properties can often be analyzed best
  169. by considering the properties in suitable classes. The classification
  170. can be for example:
  171.  
  172. - How is the color defined
  173.  
  174. - What happens when light hits the surface of the material
  175.  
  176. - What happens when light travels inside the material.
  177.  
  178. In REAL 3D, color is always included in the objects themselves, not in
  179. the materials. This is quite natural, because in the real world, the
  180. same material can appear in different colors (green glass and brown
  181. glass, etc.). For maximum flexibility, in REAL 3D materials may also
  182. contain various colouring methods which overrule the default object color
  183. or modify it. These methods include bitmap texture maps and mathematical
  184. texture maps, which are both described in detail later.
  185.  
  186. The second important property class are the properties which define what
  187. happens when light hits the surface of the material. You can define these
  188. properties from the sliders at the right side of the material editor of
  189. REAL 3D.
  190.  
  191. When light hits the surface, part of it penetrates the surface, part of it
  192. is absorbed, and part is reflected back.
  193.  
  194. Figure T3-1: Absorbed, Penetrating and Reflected Components of Light.
  195.              (PICTURE: T3-1)
  196.  
  197. First of all, the object color itself defines the amount of absorbed
  198. light: the darker the color, the more absorption. What happens to the
  199. rest of the light is defined by Transparency property. The higher the
  200. transparency, the more light penetrates the surface. The maximum amount
  201. of penetration depends on the angle in which the light hits the surface.
  202. If the light hits perpendicular to the surface, then all the light can
  203. penetrate. When the angle gets smaller, more and more is reflected.
  204. As we know from the laws of optics, if the light travels from optically
  205. thicker material to thinner (e.g. from water to air), there is an angle
  206. of total reflection after which all light is reflected back, no matter
  207. how transparent the materials are.
  208.  
  209. So, the non-absorbed light is split into two components. The behavior of
  210. both components is defined by Brilliance property. If Brilliance is zero,
  211. the surface is a diffuse matt surface, and each reflected/refracted light
  212. ray is directed randomly into the surrounding environment. This means,
  213. that no reflections of other objects can be seen on the surface.
  214. If Brilliance is maximum, 100%, the surface acts as a mirror, showing
  215. clear images of surrounding objects. If the Transparency is also high,
  216. then you get a clear glass appearance.
  217.  
  218.                              - TUTORIAL 3.5 -
  219.  
  220. Figure T3-2: Light Travelling in Different Materials  (PICTURE: T3-2)
  221.  
  222. When we combine the extreme values of Brilliance and Transparency, these
  223. are the results:
  224.  
  225.      Transparency O%   |      100%
  226.      ------------------+------------
  227.      Brilliancy 0%     |
  228.           Default matt |  Matt glass
  229.      ------------------+------------
  230.      Brilliancy 100%   |
  231.             Mirror     | Clear glass
  232.  
  233. When you create transparent materials, you can also define the refraction
  234. index using the Refraction slider. The higher the value, the less
  235. refraction that happens.
  236.  
  237. Other "Surface class" properties are:
  238.  
  239. - Specularity: the sharpness of high-lights or "hot-spots" created by
  240.                light sources.
  241.  
  242. - Specular brightness: the intensity of high-lights created by light
  243.                        sources.
  244.  
  245. - Roughness: defines molecular level roughness of the surface.
  246.  
  247. The last class are the properties which define what happens inside the
  248. materials while light travels in them. Both of the Turbidity adjustments
  249. belong to this class. Turbidity defines the degree of turbidity
  250. (fogginess) of the material. For example, you may use it when simulating
  251. atmospheric phenomena such as: fog, mist, and clouds, also when simulating
  252. water or not perfectly clear glass. Turbid saturation gives extra accuracy
  253. in simulations, as it defines the relation between the turbidity effect
  254. and the distance which the light travels inside the turbid material. The
  255. higher the value, the more easily the turbidity effect reacts to distance
  256. variations, whereas turbid saturation 0 produces "flat" turbidity.
  257.  
  258. As an example of these properties, lets create a fog cloud and a glass
  259. ball:
  260.  
  261. 1. Open the material editor. Name the first material as fog.
  262.  
  263. 2. There are no highlights on a surface of a fog cloud, so leave
  264.    specularity to zero.
  265.  
  266. 3. There is no diffuse, clear boundary surface in a fog cloud. Therefore,
  267.    set Brilliance to maximum level 100%.
  268.  
  269. 4. There is no boundary resisting light penetration. Therefore, set
  270.    Transparency to 100%.
  271.  
  272. 5. It is best to avoid strong Refractions in this case, so adjust
  273.    Refraction to 100%.
  274.  
  275. 6. Set Turbidity to 10%. The default saturation level of 25% is suitable.
  276.  
  277. 7. Activate the Smooth gadget; this allows the light to penetrate the
  278.    cloud better.
  279.  
  280. 8. Press APPLY
  281.  
  282. 9. Next create glass material: change the name to glass.
  283.  
  284.                              - TUTORIAL 3.6 -
  285.  
  286. 10. Glass always reflects light, so deactivate the Smooth gadget.
  287.  
  288. 11. Adjust specularity to 75%, to get nice highlights.
  289.  
  290. 12. Set refraction to 70%, to get "glass" refractions.
  291.  
  292. 13. Reset turbidity back to zero to get clear glass.
  293.  
  294. 14. Now glass is ready, so press APPLY.
  295.  
  296. 15. To visualize the properties of these materials, we need something on
  297.     the background, so we will create one more material: a checker
  298.     texture. First press RESET to get rid of old definitions, and then
  299.     type the name checker.
  300.  
  301. 16. Define the texture name, r3d2:textures/bluewhite. After material
  302.     RESET, Color map is automatically active.
  303.  
  304. 17. Activate TileX and TileY
  305.  
  306. 18. Press APPLY
  307.  
  308. 19. Now the materials are ready, so you may close the material editor.
  309.  
  310. 20. Create a level (Create/Structure/Level) and name it "wall".
  311.  
  312. 21. Create a large rectangle (Create/Visibles/Rectangle) filling the view.
  313.  
  314. 22. Select Create/Mapping/Parallel, select checker from the material list
  315.     and click OK, shape a small parallel mapping rectangle.
  316.  
  317. 23. Step back to the root level in the hierarchy, and create a new level
  318.     "fog".
  319.  
  320. 24. Create a white sphere (Create/Visibles/Sphere).
  321.  
  322. 25. Select Create/Mapping/Default, select the fog-material and click OK.
  323.  
  324. 26. Step back to the root level in the hierarchy and create a new level
  325.     "glassball".
  326.  
  327. 27. Create another white sphere beside the fog sphere.
  328.  
  329. 28. Select Create/Mapping/Default, select glass from the material
  330.     selector, and click OK.
  331.  
  332. 29. Now the model is ready. Take a top view of the scene and make sure
  333.     that the rectangle is behind the spheres. Then find a good viewing
  334.     angle using the cursor keys, so that you see the rectangle through
  335.     the spheres.
  336.  
  337. 30. Open the render settings dialog (View/Render/Settings). Set mode to
  338.     Lampless - in Environment mode, the renderer ignores transparency
  339.     settings in order to produce a rendered image faster. Click OK, and
  340.     render an image.
  341.  
  342. Support example:
  343. Examples/Materials/gas&glass
  344.  
  345.                              - TUTORIAL 3.7 -
  346.  
  347. 3.2 TEXTURE MAPPING
  348.  
  349. 3.2.1 General Information
  350.  
  351. In REAL 3D, Image files can be used as parameters for materials. The
  352. technique of using bitmap images for defining various material properties
  353. is called texture mapping, and the images themselves are called textures.
  354.  
  355. A typical example of texture mapping is modelling a floppy disk with a
  356. disk label. After creating a blue disk shape, it is necessary to "glue"
  357. the white label with text on to it. This label can be drawn using a paint
  358. program and then projected as a parallel texture map on to the disk.
  359.  
  360. To use texture mapping, you need:
  361.  
  362. - A texture- Any digitized/painted/scanned IFF image and also a 24/32-bit
  363.   true color Targa image created by REAL 3D can be used.
  364.  
  365. - A material referring to the texture. The material contains the name of
  366.   the texture and other desired properties.
  367.  
  368. - A mapping referring to the material. The mapping can be created by using
  369.   Create/Mapping menu.
  370.  
  371. - An object to which the material is applied using the mapping. As
  372.   described earlier in this section; the object and mapping should be
  373.   placed under the same hierarchy level.
  374.  
  375. The tutorial chapter 3.1.2 has already demonstrated how to create a
  376. texture mapped object. In the following chapters, we will consider
  377. different aspects of texture mapping in more detail.
  378.  
  379. 3.2.2 Textures
  380.  
  381. It is possible to use from 1 to 24-bit IFF files or true color Targa
  382. files as textures. The image format, size, and depth that is the most
  383. suitable, depends on the application. The following examples demonstrate
  384. some basic rules of how to choose the correct texture type.
  385.  
  386. - 24-bit textures are usually only necessary when outputting 24-bit
  387.   graphics. Using smaller image depths saves a lot of memory and are
  388.   faster to render.
  389.  
  390. - Grade-function can be used to obtain 24-bit color resolution with lower
  391.   texture depths. For example, to get a texture with a 24-bit color
  392.   gradient from blue to white: you can use a two pixel, 1 bit deep image,
  393.   (which contains only one white pixel and one blue pixel), and "grade"
  394.   the texture. This saves memory, because this image occupies only a
  395.   couple of bytes of memory , whereas the corresponding 24-bit texture
  396.   may require several hundred kilobytes of memory or more. Nevertheless,
  397.   the texture gradient function is a time-consuming one, and sometimes
  398.   24-bit textures can be faster to render.
  399.  
  400. - Regular geometric patterns can often be represented with very low
  401.   resolution textures. For example, for a checker pattern, you need only
  402.   a 4 pixel, one bit deep tiled texture. The Tiling feature, repeating
  403.   the same pattern, is handy in situations like this.
  404.  
  405. - If you are creating an animation where you zoom in very close to a
  406.   texture mapped surface, you will probably need a quite high resolution
  407.   texture in order to avoid clearly visible pixelization effects. Also,
  408.   the "grade" function is useful for this purpose.
  409.  
  410.                              - TUTORIAL 3.8 -
  411.  
  412. 3.2.3 Texture Mapped Materials
  413.  
  414. In REAL 3D, texture mapping is a material property. Each material of the
  415. material library can contain a texture map. If you want to apply multiple
  416. texture maps for an object, you can create several materials and link them
  417. all with the object. This is demonstrated later in the chapter "Multiple
  418. Materials".
  419.  
  420. A material can use a texture for defining various properties independently
  421. from each other. For example, a texture can act as a bump map and as a
  422. color map at the same time. There are seven different usages for texture
  423. mapping:
  424.  
  425. - Color mapping: maps the color of the texture to the material.
  426.  
  427. - Bump mapping: uses the red component of the texture as a local height
  428.   information when shading the surface of the material.
  429.  
  430. - Transparency mapping: uses the green component of the texture to define
  431.   Transparency of the material.
  432.  
  433. - Brilliancy mapping: uses the blue component of the texture to define
  434.   brilliance of the material.
  435.  
  436. - Shadow mapping: filters the original color of the object with the
  437.   texture colors.
  438.  
  439. - Clip mapping: can be used to clip/cut surfaces.
  440.  
  441. - Scope masking: defines the spatial scope/visibility of the material
  442.   using the texture shape as a mask.
  443.  
  444. Note :
  445. Clip mapping is actually a material property. It does not reshape the
  446. object - the Renderer just treats clip mapped areas as fully transparent
  447. material. Clip mapping usually does not work properly in Environment
  448. rendering mode where transparency in general cannot be simulated
  449. convincingly.
  450.  
  451. 3.2.4 Mapping
  452.  
  453. Mathematically, the term "mapping" means; a rule which defines how to
  454. attach to every point of a space, exactly one counterpart in another
  455. space. REAL 3D uses this kind of rule to define how a point in 3D
  456. absolute space is mapped into the 3D material space, where the
  457. properties of the materials are defined.
  458.  
  459. The data item which defines the rule is called mapping. You can create
  460. mappings using the functions in the menu Create/Mapping. There are five
  461. basic mappings available:
  462.  
  463.      - Default
  464.      - Parallel
  465.      - Cylinder
  466.      - Sphere
  467.      - Disk
  468.  
  469. Each mapping performs a 3D coordinate transformation in a natural way.
  470. For example, Default mapping leaves the coordinates unchanged and sphere
  471. mapping maps normal 3D coordinates to polar coordinates (horiz. angle,
  472. vert. angle, radius).
  473.  
  474. Each mapping (except Default) includes a geometry (or shape), which
  475. visualizes and defines how the coordinate transformation happens. You
  476. define the geometry when creating the mapping, and because REAL 3D stores
  477. the mappings in the hierarchy tree, you can easily modify (resize, move
  478. etc.) or even animate them.
  479.  
  480. The mappings can be customized using the Mapping handler from the material
  481. editor. For example, a cylinder mapping can be modified to a spiral style
  482. mapping by activating the built-in Mapping/Tilt handler.
  483.  
  484. Note :
  485. Although the geometric properties of mappings are mainly used with texture
  486. mapping, REAL 3D uses mappings as a way of connecting a material to an
  487. object. The coordinate transformation of a mapping may not be used at all.
  488.  
  489.                              - TUTORIAL 3.9 -
  490.  
  491. 3.2.5 Sector Mappings
  492.  
  493. Sometimes when using cylinder, disk, or sphere texture mapping, it is
  494. desirable to map the texture into a sector instead of full 360 degrees.
  495. The following example demonstrates how to do this, and at the same time,
  496. it shows how to use a lower level interface of REAL 3D for defining
  497. mappings.
  498.  
  499. Let us assume that the task is to create a cylindrical can, which has a
  500. label covering 1/3 of the side of the can. The following actions give the
  501. desired result:
  502.  
  503. 1. Create the can using Create/Visibles/Cylinder function.
  504.  
  505. 2. Use Create/Sectors/Cylinder to create a cylinder sector, using the same
  506.    axis as the "can" cylinder. Position the sector suitably so that the
  507.    cylinder sector defines the correct area for the label on the surface
  508.    of the can.
  509.  
  510. 3. Make sure that the cylinder sector is selected and select Modify/
  511.    Properties/Attributes function; REAL 3D opens the attributes requester.
  512.    Activate Mapping gadget and select OK.
  513.  
  514. 4. Now open the material editor and create a material with a suitable
  515.    color texture. Activate Color map and define the image name. Name
  516.    the material as "label", and press APPLY. Then close the material
  517.    editor.
  518.  
  519. 5. Make sure that the cylinder sector is still selected and select
  520.    Modify/Properties/Tags menu. When requester opens, click the Add
  521.    gadget. Then type the four capital letters SMAT , then click in the
  522.    empty space and finally type the name of the material, "label". In
  523.    other words, type the string "SMAT label". It is important that the
  524.    string is exactly correct, including upper/lowercase characters,
  525.    otherwise the material will not be found. Then click OK.
  526.  
  527. 6. Now the scene is ready for rendering; select environment rendering
  528.    mode and start the rendering.
  529.  
  530. Support example:
  531. Examples/Materials/sector_mapping
  532.  
  533. 3.2.6 Spline Mapping
  534.  
  535. In addition to the basic mappings and sector mappings presented earlier,
  536. REAL 3D offers an advanced method for using cubic B-spline parameter
  537. space mapping. This technique means that you can use a cubic B-spline
  538. surface as a mapping for itself so that the mapping automatically follows
  539. the shape of the B-spline surface. When using this mapping method, the
  540. texture pattern follows the surface deformations in a natural way, no
  541. matter how much the surface is bent or stretched. A good example is a
  542. roll of chequered paper rolled open during an animation; if the paper
  543. roll is modelled using a cubic B-spline surface, and the pattern is a
  544. spline mapped color texture, then the desired result is achieved.
  545.  
  546. To use spline mapping:
  547.  
  548. 1. Create an object using a cubic B-spline surface.
  549.  
  550. 2. Open the material editor and create a material having the desired
  551.    texture map. Select the desired texture mapping type, for example
  552.    color mapping.
  553.  
  554. 3. Activate the Spline map gadget, and press APPLY to create the material.
  555.  
  556. 4. Use Create/Mapping/Default and create a mapping on a view. You can use
  557.    Default or any other mapping, because spline mapping overrules the
  558.    original mapping geometry.
  559.  
  560.                              - TUTORIAL 3.10 -
  561.  
  562. 5. Link the object and the mapping together in the hierarchy unless you
  563.    have done it already, for example by multi-selecting both and using
  564.    Create/Boolean/OR.
  565.  
  566. 6. Render the scene using Environment rendering mode. Make sure that
  567.    B-Spline->Phong rendering setting is not active - spline mapping does
  568.    not work with Phong shaded surfaces.
  569.  
  570. Note:
  571. That you can use spline mapping to map: bumps, other properties as well as
  572. colors, tiling, and other texture mapping options. When tiling, you may
  573. use the two rightmost fields of S-map uvwh gadgets of the material editor
  574. to scale the tile size: for example, a value 0.25 produces four tiles to
  575. the surface.
  576.  
  577. Support example:
  578. Examples/Materials/spline_mapping
  579.  
  580. 3.2.7 Index Format String
  581.  
  582. REAL 3D supports automatic indexing of texture file names. This feature
  583. can be used for creating animated textures. In this chapter, the indexing
  584. system is described in detail.
  585.  
  586. There are several places in REAL where an index must be included in a
  587. file name, e.g. a sequence of Backdrop Image files. When such an index is
  588. needed, it is included in the name by using an Index Format String. The
  589. inclusion of this string not only specifies that an index is to be used,
  590. but also what format is to be used for the index, and where in the name
  591. it is to be placed.
  592.  
  593. For those familiar with the "C" programming language this Index Format
  594. String uses the same conventions as the "C" function "sprintf". For most
  595. indexing, use of the following information should suffice:
  596.  
  597.      "%" Start of format string
  598.  
  599. This is then followed by either or none of:
  600.  
  601. "-" To specify that the index should be left-justified
  602.  
  603. "Field width specifier". if the index has less digits than the field
  604. width, then it will be padded either to the left or right if "-" is used.
  605. If this width is specified with a leading zero then the padding character
  606. will be a zero, otherwise it will be a space. The format string is then
  607. ended with the conversion character "d". This specifies the index to be
  608. in decimal format.
  609.  
  610. Examples:
  611.  
  612.      If the index variable is 3
  613.  
  614.      File_Name_%d produces:       File_Name_3
  615.      File_Name_%2d produces:      File_Name_3
  616.      File_Name.%-2d.IFF produces: File_Name.3.IFF
  617.      File_Name.%03d produces:     File_Name.003
  618.  
  619. 3.2.8 Animated Textures
  620.  
  621. When creating animations, it is often desirable to also animate textures
  622. instead of using static texture maps. For example, one can animate a walk
  623. through a room where a television is displaying changing images; in this
  624. case, the TV screen should contain an sequence of varying color textures.
  625.  
  626. REAL 3D offers flexible tools for creating such effects. In order to
  627. create a animated texture, do the following:
  628.  
  629. 1. Create the texture sequence. For example, draw ten images, and save
  630.    them with the same name appended with a growing index. The indexing
  631.    convention can be selected quite freely, you can find the exact rules
  632.    from the previous chapter "Index Format String". The actual name must
  633.    be the same for all the images. For example: "txr0",
  634.  
  635.                              - TUTORIAL 3.11 -
  636.  
  637.    "txr1", "txr2", etc.
  638.  
  639. 2. Create a material, and type the name of the textures you created
  640.    without index to the texture name field (e.g."txr"). Append the index
  641.    format string after the name as presented in the previous chapter.
  642.  
  643. For example, the texture name definition can be "txr%d".
  644.  
  645. 3. Select the desired Index handler for the material using the material
  646.    editor. The default handler goes through the textures incrementing the
  647.    index frame by frame. If you are going to use cyclic texture animation
  648.    instead of having a new index for each new frame, you should set the
  649.    parameter b to be the amount of textures, (e.g. 10).
  650.  
  651. 4. Use the material in your animation.
  652.  
  653. Instead of using the cyclic handler , you can use the pingpong handler,
  654. which goes back and forth in the texture sequence. You can also define the
  655. rule which defines which texture to use in each frame/time value by using
  656. RPL/Formula handlers, as presented in the chapter "Procedural Handlers" of
  657. this section and in the reference section. When using those alternatives,
  658. you can refer to the global/local animation time or to the frame counter.
  659.  
  660. The tutorial example file "Examples/Materials/Water" contains an example
  661. of using an animated bump texture to simulate waves. It uses default
  662. index handler with a 30 frame cycle, and therefore, if you want to produce
  663. a loop animation, you should set the animation window resolution gadget to
  664. a multiply of 30 frames: 30, 60 or 90 etc.
  665.  
  666. 3.3 ADVANCED MATERIAL FEATURES
  667.  
  668. 3.3.1 Multiple Materials
  669.  
  670. This chapter explains one very important part of the material handling of
  671. REAL 3D, namely the usage of multiple materials per object. Actually, the
  672. tutorial example presented earlier used this method when demonstrating the
  673. connection between the hierarchy and materials ("shiny marble").
  674.  
  675. Using mutiple materials is quite easy. You just create the object and the
  676. materials you want to apply to the object. Then you create a hierarchy
  677. level, put the object under it and create as many mappings as necessary
  678. under the same level. For example:
  679.  
  680.      multimatobj
  681.         myobject
  682.         colormat(T)
  683.         bumpmat1(T)
  684.         bumpmat2(T)
  685.         topmat(T)
  686.  
  687. Different materials may be used to define different properties for the
  688. object. For example: a material including a colour texture for defining
  689. the color, a material with a dense bump texture to define surface
  690. roughness, and a material with a large scale bump texture to define bigger
  691. bumps.
  692.  
  693. Secondly, different materials may be used to define object properties in
  694. different spatial locations. For example: a sphere can be textured so that
  695. the north pole is made of wood and the south pole is made of marble.
  696.  
  697. Often, when multiple materials are applied, the material definitions do
  698. not overlap, and it is easy to predict what the result is. For example:
  699. if you map two non-tiled parallel colour textures, say, two labels, to a
  700. box so that the labels do not overlap, you just get two separate coloured
  701. areas on the box surface. A more interesting case occurs when the
  702. materials overlap. By default, if
  703.  
  704.                              - TUTORIAL 3.12 -
  705.  
  706. two mappings define two different values for a material property in a
  707. point in space, REAL 3D uses the average of the two at that point. In
  708. other words, the materials get automatically blended.
  709.  
  710. Different bump definitions are:
  711.  
  712. - A bitmap bump texture: Image + Bump map
  713.  
  714. - A math. bump texture: Bump handler = built-in/RPL/formula.
  715.  
  716. The material editor includes some functions with which you can control
  717. material blending more accurately. First of all, the Effect slider offers
  718. global adjustment which determines how much the material affects the
  719. objects to which it is applied. For example, if you apply marble to an
  720. object and marble has 50% Effect setting, you get a marble-default material
  721. mixture. When the materials are blended, the Effect values are used as
  722. weights which define how big a proportion of each material is put to
  723. the mixture.
  724.  
  725. Secondly, scope handlers can be used as spatial weight distributions.
  726. This means that the effect of a material can vary in different points of
  727. 3D space. For example, you may create a spot of marble in a wooden object
  728. so that the marble smoothly fades away and turns into wood.
  729.  
  730. One of the most useful scope handlers is the built-in Local scope handler.
  731. It weights the material effect so that the effect is maximum in the middle
  732. point of the mapping used (e.g. in the middle point of a sphere mapping or
  733. in the top left corner of a parallel mapping). The maximum effect, defined
  734. by the effect slider, fades smoothly away within a certain radius. By
  735. default, this radius is the radius of the mapping, but it can be overruled
  736. by defining a non-zero parameter in a.
  737.  
  738.  
  739. Other built in scope handlers are described in the reference section.
  740.  
  741. As an example, we can create a bumpy sphere whose north pole is made of
  742. wood and south pole is made of marble.
  743.  
  744. 1. Create a new level.
  745.  
  746. 2. Create a sphere under the level.
  747.  
  748. 3. Open material editor.
  749.  
  750. 4. First create the bumpy material: define name bumpy, define texture
  751.    r3d2:bumpmaps/irregular, deactivate Colour map and activate Bump map,
  752.    set bump height to 5% and adjust specularity to 50%. Hit APPLY.
  753.  
  754. 5. Create wood: hit RESET, then define name wood, texture R3D2:textures/
  755.    wood1, activate tile gadgets, and set specularity again to 50%. Then
  756.    click Scope handler gadget until it displays "Local". Hit APPLY.
  757.  
  758. 6. Create marble: do NOT reset the material editor, just change material
  759.    name to marble and change texture name to R3D2:textures/marble1. Hit
  760.    APPLY. Now the materials are ready, so you may close the material
  761.    editor.
  762.  
  763. 7. First create the global bumpy material mapping: select Create/Mapping/
  764.    Sphere, select bumpy and click OK, click in the middle of the sphere
  765.    and size the texture sphere.The size can be equal to the size of the
  766.    original sphere. t does not matter in this case.
  767.  
  768. 8. Select Create/Mapping/Sphere again, select wood, and shape the mapping
  769.    so that the north pole is in the middle of the mapping sphere. The size
  770.    should be almost twice the size of the original sphere.
  771.  
  772. 9. Select Create/Mapping/Sphere, select marble, and shape an equally big
  773.    mapping around the south pole.
  774.  
  775. 10. Render the image in environment mode.
  776.  
  777. Support example:
  778. Examples/Materials/Localscope.
  779.  
  780.                              - TUTORIAL 3.13 -
  781.  
  782. The Scope mask feature offers an easy way to define the scope
  783. distribution. You can use an image to define which parts of the space are
  784. affected by the material. The following example, writing "rough" letters
  785. to a matt surface, demonstrates this.
  786.  
  787. 1. Start the example by drawing white text on black background in a paint
  788.    program. Save the image or suitable part of it as a brush.
  789.  
  790. 2. Open the material editor of REAL 3D and type the name of a material,
  791.    "rough".
  792.  
  793. 3. Define the texture name to be the text brush name.
  794.  
  795. 4. Deactivate Colour map gadget.
  796.  
  797. 5. Activate Scope mask gadget.
  798.  
  799. 6. Activate Transp. col gadget, and set transparent colour to black using
  800.    Transp.R, Transp.G and Transp.B gadgets (all zero). This means that you
  801.    will not map the black background colour of the text.
  802.  
  803. 7. Adjust roughness to 30% and hit APPLY.
  804.  
  805. 8. Create a rectangle on a view window.
  806.  
  807. 9. Create a parallel mapping for the rectangle having equal size and
  808.    position as the rectangle.
  809.  
  810. 10.Render an image in environment mode.
  811.  
  812. Support example:
  813. Examples/Materials/Scopemasking
  814.  
  815. 3.3.2 Procedural Handlers
  816.  
  817. Each handler row of the material editor of REAL 3D includes four main
  818. types of handlers: Default handler, additional built in handlers, RPL
  819. handler and formula handler. The two last ones, RPL and formula, make it
  820. possible for the user to easily and quickly define new custom handlers.
  821. For example, it is possible to define an infinite number of different
  822. mathematical colour textures. The Formula handler is based on the EVAL
  823. word of RPL. When using the Formula handler, you can type in a formula
  824. directly which defines the desired properties from a certain set of
  825. parameters. These parameters could include for example: material space
  826. coordinates x, y and z. It is possible to use all the usual mathematical
  827. functions in these formulas; the exact list is given in RPL EVAL
  828. documentation.
  829.  
  830. It is possible to create quite interesting bump map textures using
  831. trigonometric functions. The following example of a bump mapped surface
  832. where the bumps are also time dependent, demonstrates this:
  833.  
  834. 1. Open the material editor and name the new material as wave.
  835.  
  836. 2. Set Bump handler to Formula and type the following formula to the
  837.    string gadget of the handler:
  838.  
  839.    bx = sin(3*sin(5*x)+y+T*3.14),by = sin((x+T)*3.14)*cos(5*x*y)
  840.  
  841. 3. Add some specularity to the material and hit APPLY.
  842.  
  843. 4. Create a blue rectangle and create a parallel mapping referring to the
  844.    wave material.
  845.  
  846. 5. Render an image or an animation.
  847.  
  848. Support example:
  849. Examples/materials/mathbumps
  850.  
  851.                              - TUTORIAL 3.14 -
  852.  
  853. RPL handlers offer even more flexible way of expanding the material
  854. features. In this case, the string gadget associated with the RPL
  855. handler may contain any RPL expression, including the EVAL word. RPL
  856. coded expressions are faster than Formula expressions, but require more
  857. RPL knowledge. The RPL expression used may also be a full RPL procedure
  858. defined in the master RPL environment. For more details, see RPL
  859. documentation.
  860.  
  861. The following examples demonstrate the usage of formula handlers.
  862.  
  863. Example:  y = y + 10*sin(4*a*x/100)  where a = 6.28
  864.  
  865. When used with an image file 100 pixels wide to be mapped onto the
  866. surface, this formula produces a series of vertical sine wave ripples.
  867. The parameter a is being used to convert x into radians, so that using the
  868. constant 4 produces four cycles of sine waves. The constant 10 in the
  869. expression makes the sine deviation +/- 10 pixels.
  870.  
  871. Example: s = 25
  872.  
  873. This combines 25% of the properties of the material with the existing
  874. properties.
  875.  
  876. Example: s = x
  877.  
  878. When used with a texture file 100 pixels wide will apply the image such
  879. that its effect becomes stronger over the whole width of the image.
  880.  
  881. The scope handler is also the most appropriate place to assign procedural
  882. values to the Material Variables controlling the basic physical material
  883. properties.
  884.  
  885. Example: br = 100.0*x
  886.  
  887. When used with a parallel mapping texture and no image file causes
  888. brilliance to increase linearly along the width of the mapping rectangle.
  889.  
  890. Example: bx = sin(5*a*x), by = sin(2*a*y)
  891.          when a = 6.28
  892.  
  893. Applies sine wave ripples in x and y direction to the surface. The "a"
  894. parameter is again being used as 2*pi to convert x & y to radians so that
  895. the constants 5 & 2 produce five ripples along the x axis and 2 ripples
  896. along the y. Since x & y are not normalized, these expressions only
  897. produce the correct results when used without a texture file.
  898.  
  899. Example:  R = 255*x, G = 255*y, B = 255*z
  900.  
  901. The above expressions replace any existing colour components with a Red
  902. value, which increases along the x axis of the texture, and a Green value
  903. which increases along y. The Blue value is derived from the z coordinate.
  904. Using these expressions would mean that the colour of the surface would
  905. depend upon its position in the texture.
  906.  
  907. The size variable can be used to bind a formula to the size of a texture,
  908. as in the following example:
  909.  
  910. Example:  R = if(z <= sz, 255, 0)
  911.  
  912. This replaces the red component of the surface with a full intensity
  913. value, if the point on the surface is inside the texture size.
  914.  
  915. Example:  i = F/a when a = 3
  916.  
  917. The index increases at one third of the rate of the Global Animation
  918. Index.
  919.  
  920. Example:  i = 10*t%5
  921.           % - modulus function
  922.  
  923. As the local time "t" changes from 0.0 to 1.0 the index will change from
  924. 0 to 4 twice.
  925.  
  926.                              - TUTORIAL 3.15 -
  927.  
  928. 3.3.3 Non-homogeneous Materials
  929.  
  930. The Scope feature can be used for defining non-homogeneous materials.
  931. There are two ways to do this: by using Formula/RPL scope handler with an
  932. RPL expression, which defines the desired property directly, or by using
  933. multiple scope-weighted materials, in which case the blending process
  934. produces different results in different parts of space.
  935.  
  936. An example of the formula method is a shiny material with a formula scope
  937. handler and formula
  938.  
  939.      sb = 50*(sin(x)+1)
  940.  
  941. This formula modifies specular brightness; trigonometric sin function
  942. produces a repeating horizontal brightness wave pattern. As an example of
  943. the second method, blending two materials, let us consider modelling a
  944. planet with atmosphere. The purpose is to make the atmosphere glow when
  945. sun shines through it.
  946.  
  947. 1. Open the material editor. First create a planet surface material:
  948.    name it as planet, set texture map to r3d2:textures/planet, and press
  949.    APPLY.
  950.  
  951. 2. Create a star sky material: change the name of the material to space,
  952.    and change the texture name to r3d2:textures/space. Activate TileX/
  953.    TileY gadgets, and set Unshaded flags, because the image will be used
  954.    as an unshaded back ground plate. Press APPLY.
  955.  
  956. 3. Create gas material: hit RESET button to get a clean start, name the
  957.    material as gas, activate the Smooth gadget to eliminate surface
  958.    reflections, set Transparency, Brilliancy and Refraction to 100%,
  959.    turbidity to 10%, turbid saturation to 50%, and specularity to 100%.
  960.    Hit APPLY.
  961.  
  962. 4. Create glowing gas by modifying the previous material: change the name
  963.    to glow, and adjust specular brightness to 10%. Then select Local scope
  964.    handler, and select APPLY to insert the new material into the material
  965.    library.
  966.  
  967. 5. Now you may close the material editor, and start building the objects.
  968.    First create a level and name it star plane. Create a rectangle under
  969.    the level, and create a parallel mapping, which refers to space
  970.    material. The space textured rectangle will act as a background plate,
  971.    so place it behind the rest of the scene and size it accordingly. It is
  972.    probably necessary to use Modify/Properties/Attributes/Infinite gadget
  973.    to make the plane infinite.
  974.  
  975. 6. Go back to the root level of the hierarchy and create a level called
  976.    planet. Create a sphere under the planet level. Then take a view from
  977.    above to the planet and create a sphere mapping referring to the planet
  978.    material.
  979.  
  980. 7. Step back to root level and create a new level called atmosphere. Under
  981.    that level, create another sphere, white or light blue, around the
  982.    planet sphere, make it a little bigger than the planet. Then define two
  983.    sphere mappings, one referring to gas and the second one referring to
  984.    glow. Both mappings should match exactly the size and position of the
  985.    atmosphere.
  986.  
  987. 8. Create a light source between the star plane and the planet.
  988.  
  989. 9. Adjust the camera so that you look towards the planet with the star
  990.    plane behind it. Also, make sure that you see the light source through
  991.    the atmosphere.
  992.  
  993. 10. Open render settings requester. Select Normal rendering mode, set Mat.
  994.     samples to one and hit OK. Then render an image.
  995.  
  996.                              - TUTORIAL 3.16 -
  997.  
  998. The hierarchical structure of the scene is:
  999.  
  1000.      Root
  1001.         starplane
  1002.           rectangle
  1003.           space(T)
  1004.         planet
  1005.           ellipsoid
  1006.           planet(T)
  1007.         atmosphere
  1008.           ellipsoid
  1009.           gas(T)
  1010.           glow(T)
  1011.         lamp
  1012.  
  1013. It is important that the planet is above the atmosphere object in the
  1014. hierarchy, because the two overlap. The planet object should replace
  1015. atmosphere, not the other way around. The higher an item is in the
  1016. hierarchy, the higher priori it has.
  1017.  
  1018. In this example, the specular glow of gas fades away towards the outer
  1019. edge of the atmosphere because of the Local scope property. What is
  1020. left is the other non-glowing gas. The Mat. sampling value 1 was very
  1021. important: it instructs REAL 3D to study the material not only on the
  1022. surface of the atmosphere, but inside it too.
  1023.  
  1024. Therefore, the non-homogeneous nature of the gas is detected and the
  1025. proper effect is created.
  1026.  
  1027. Note:
  1028. That using a nonzero Mat.sampling value has meaning only if transparent
  1029. materials are used.
  1030.  
  1031. Support example:
  1032. Examples/Materials/Planet.
  1033.  
  1034. 3.3.4. Mappings and Hierarchy
  1035.  
  1036. Hierarchical manipulation of mappings requires some consideration. When
  1037. creating certain animation effects (e.g. material metamorphosis), mappings
  1038. must be grouped using hierarchy, or referred to across the hierarchy. It
  1039. has already been pointed out that a mapping connects a material only to
  1040. those objects which are located in the same hierarchy level as the mapping
  1041. itself. How do you connect a hierarchical group of mappings into an
  1042. object?
  1043.  
  1044. This can be done by using the "Mapping flag" of the Modify/Properties/
  1045. Attributes function. Anywhere in the hierarchy you can replace a mapping
  1046. with a level or a symbolic link by setting the "mapping flag" of the level
  1047. or link. The level may contain the actual mappings or the link may refer
  1048. to the actual mapping. Anyway, REAL 3D looks at the whole hierarchy
  1049. regressively checking all the objects labelled with texture flags. If a
  1050. level or link without a Mapping flag is found, recursion does not proceed
  1051. under it. All the mappings found in this way will affect the result.
  1052.  
  1053. As an example, consider the following simple hierarchy of an animated
  1054. texture map group:
  1055.  
  1056.      Root
  1057.         candlestick
  1058.         motion_ mat(T)
  1059.           mappings(T)
  1060.             wood(T)
  1061.             marble(T)
  1062.         level(M)
  1063.             line
  1064.  
  1065. Support example:
  1066. Examples/Materials/moving_texture
  1067.  
  1068.                              - TUTORIAL 3.17 -
  1069.  
  1070. 3.3.5. Some Material Morphing Examples
  1071.  
  1072. The following examples may help clarify how to morph materials.
  1073.  
  1074. Example 1:
  1075. Material morphing using built-in "Temporal Scope" handler
  1076.  
  1077. This material handler can be used for modifying the effect (scope) field
  1078. of the material from one value to another. These values are defined by
  1079. using Scope a & b fields. The field "a" defines how strongly the material
  1080. in question affects objects in the beginning of the time and "b" is used
  1081. for defining the effect for the end of the animation.
  1082.  
  1083. For example, if you would like to create a wooden sphere whose material is
  1084. morphed to marble during the animation, you could create two materials so
  1085. that the effect level of the first material starts from the zero and gets
  1086. stronger while the effect of the second material gets weaker and weaker.
  1087. In order to do this:
  1088.  
  1089. 1. Create two materials named "wood" and "marble". Use colour mapping and
  1090.    appropriate textures so that you can see when the material changes from
  1091.    wood to marble. Set the Scope cycle gadget of both materials to
  1092.    "Temporal" and use the following values for "a" and "b" fields:
  1093.  
  1094.      Material   a b
  1095.      --------------
  1096.      wood       1 0
  1097.      marble     0 1
  1098.  
  1099. When the time is 0, marble has no effect at all while the material "wood"
  1100. is at its maximum level. When the time proceeds, the material "marble"
  1101. gets stronger and stronger, whereas the "wood" material is faded away.
  1102.  
  1103. 2. Create a sphere.
  1104.  
  1105.       +------+
  1106.       | Root |
  1107.       +------+
  1108.          |
  1109.      +--------+
  1110.      | sphere |
  1111.      +--------+
  1112.  
  1113. 3. Add both materials using Create/Mapping/Parallel.
  1114.  
  1115.                 +------+
  1116.                 | Root |
  1117.                 +------+
  1118.                 /   |  \
  1119.                /    |   \
  1120.               /     |    \
  1121.      +--------+ +------+ +--------+
  1122.      | sphere | | wood | | marble |
  1123.      +--------+ +------+ +--------+
  1124.  
  1125. Note:
  1126. You can use different mapping methods for the different materials, for
  1127. example: parallel projection for the wood and cylinder projection for the
  1128. marble. Not only can the texture be morphed, but also the projection type
  1129. can be morphed over the time.
  1130.  
  1131. 4. Play the animation.
  1132.  
  1133. Support example:
  1134. Examples/Materials/temporal_scope
  1135.  
  1136. Example 2:
  1137. Mapping geometry morphing
  1138.  
  1139. Because mappings are really primitives defining the size, position and
  1140. orientation for the actual bitmap textures, you can animate the mappings
  1141. using all the animation methods available. For example, you could use
  1142. mappings as particles and animate them using the particle system oriented
  1143. animation techniques, such as wind and gravity, or perhaps you just want
  1144. to rotate the texture about your objects using ROTATE method. The
  1145. following example demonstrates how to move a texture over an object during
  1146. an animation by using PATH method.
  1147.  
  1148.                              - TUTORIAL 3.18 -
  1149.  
  1150. 1. Create a "wood" material using an appropriate texture.
  1151.  
  1152. 2. Create an object, say tube.
  1153.  
  1154.               +------+
  1155.               | Root |
  1156.               +------+
  1157.                  /
  1158.            +------+
  1159.            | tube |
  1160.            +------+
  1161.            /   |  \
  1162.           /    |   \
  1163.      +----+ +----+ +----+
  1164.      | p1 | | p2 | | p3 |
  1165.      +----+ +----+ +----+
  1166.  
  1167. 3. Create a mapping using parallel projection (Create/Mapping/Parallel).
  1168.    This sets the material of your object "Tube" to wood (remember the
  1169.    philosophy: if your object consists of a car and a motion, the result
  1170.    is a moving car, if your object consists of a "Tube" and a "wood", the
  1171.    result is a wooden tube).
  1172.  
  1173.               +------+
  1174.               | Root |
  1175.               +------+
  1176.                  /   \
  1177.            +------+ +---------+
  1178.            | tube | | wood(T) |
  1179.            +------+ +---------+
  1180.            /   |  \
  1181.           /    |   \
  1182.      +----+ +----+ +----+
  1183.      | p1 | | p2 | | p3 |
  1184.      +----+ +----+ +----+
  1185.  
  1186. 4. Now animate "wood" primitive by applying the function Animate/Create/
  1187.    path to it (i.e. define what kind of path the wood texture should
  1188.    follow). Now the hierarchical structure of your object is as follows:
  1189.  
  1190.                     +------+
  1191.                     | Root |
  1192.                     +------+
  1193.                     /      \
  1194.                    /        \
  1195.            +------+          +------+
  1196.            | tube |          | wood |
  1197.            +------+          +------+
  1198.            /  | \               /   \
  1199.           /   |  \             /     \
  1200.      +----++----++----+ +---------+ +--------------+
  1201.      | p1 || p2 || p3 | | wood(T) | | level (PATH) |
  1202.      +----++----++----+ +---------+ +--------------+
  1203.                                        /
  1204.                                     +------+
  1205.                                     | line |
  1206.                                     +------+
  1207.  
  1208. 5. Set the texture flag of the level object/Root/wood. This tells the
  1209.    renderer to look inside the level to seek out actual mapping
  1210.    primitives.
  1211.  
  1212. 6. Render the animation
  1213.  
  1214. Support example:
  1215. Examples/Materials/mapping_path
  1216.  
  1217. Example 3:
  1218. Material/Mapping geometry morphing using MORPHING animation method
  1219.  
  1220. You can use morphing to animate the shape of mapping primitives. This also
  1221. causes the properties of the corresponding materials to be morphed. In
  1222. this example, we will create three "key" materials which are used as key
  1223. frames for morphing the "result" material and mapping geometry.
  1224.  
  1225. 1. Create four materials called "result", "key1", "key2" and "key3". Use,
  1226.    for this example, different specularity levels for the different key
  1227.    materials. Properties of the result material do not matter, because
  1228.    they will be determined by the key materials during the animation.
  1229.  
  1230. 2. Create a sphere
  1231.  
  1232.       +------+
  1233.       | Root |
  1234.       +------+
  1235.          |
  1236.      +--------+
  1237.      | sphere |
  1238.      +--------+
  1239.  
  1240. 3. Create a level object named as "level" and set the mapping flag of it,
  1241.    using Modify/Properties/Attributes.
  1242.  
  1243.             +------+
  1244.             | Root |
  1245.             +------+
  1246.               /  \
  1247.              /    \
  1248.      +--------+ +-----------+
  1249.      | sphere | | level (T) |
  1250.      +--------+ +-----------+
  1251.  
  1252.                              - TUTORIAL 3.19 -
  1253.  
  1254. 4. Create the "result" mapping using parallel mapping.
  1255.  
  1256.             +------+
  1257.             | Root |
  1258.             +------+
  1259.               /  \
  1260.              /    \
  1261.      +--------+ +-----------+
  1262.      | sphere | | level (T) |
  1263.      +--------+ +-----------+
  1264.                   /
  1265.              +--------+
  1266.              | result |
  1267.              +--------+
  1268.  
  1269. 5. Create a level object called "keys" with the animation method MORPHING
  1270.    CLOSED.
  1271.  
  1272.             +------+
  1273.             | Root |
  1274.             +------+
  1275.               /  \
  1276.              /    \
  1277.      +--------+ +-------+
  1278.      | sphere | | level |
  1279.      +--------+ +-------+
  1280.                   /    \
  1281.            +--------+ +----------+
  1282.            | result | | keys (M) |
  1283.            +--------+ +----------+
  1284.  
  1285. 6. Create parallel mappings key1, key2 and key3 inside the morphing object
  1286.    "keys". Each mapping should have different shape, size and position.
  1287.  
  1288.             +------+
  1289.             | Root |
  1290.             +------+
  1291.               /  \
  1292.              /    \
  1293.      +--------+ +-------+
  1294.      | sphere | | level |
  1295.      +--------+ +-------+
  1296.                   /    \
  1297.            +--------+ +---------+
  1298.            | result | | keys(M) |
  1299.            +--------+ +---------+
  1300.                        /   |    \
  1301.                       /    |     \
  1302.                 +------++------++------+
  1303.                 | key1 || key1 || key1 |
  1304.                 +------++------++------+
  1305.  
  1306. 7. Set the Modify/properties/Attributes/WF-Invisible flag for "keys(M)"
  1307.    level if you don't want to see all mapping wireframes.
  1308.  
  1309. 8. Now use one material window and two  view windows for rendering the
  1310.    animation. Load the material "result" into the material window so that
  1311.    you can see how the properties of it are morphed during the animation.
  1312.    Set the View/Drawing Set/Render_Wire flag of one view window so that
  1313.    you can see how the wire-frame representation of the result mapping is
  1314.    morphed. Use, for example, Lampless mode shading on the second view
  1315.    window so that it shows the animation using ray tracing.
  1316.  
  1317. Support example:
  1318. Examples/Materials/mat_morphing
  1319.  
  1320. Example 4:
  1321. Using an intelligent object to modify material properties
  1322.  
  1323. One possible way to morph material properties over the time is to use one
  1324. intelligent object for that purpose. Usually methods are used for defining
  1325. how objects with which they are associated behave, but nothing prevents us
  1326. from using them for defining how materials behave as well.
  1327.  
  1328. 1. Create one material, "wood".
  1329.  
  1330. 2. Create one sphere, one (parallel) mapping and one empty level.
  1331.  
  1332.                +------+
  1333.                | Root |
  1334.                +------+
  1335.                /   |  \
  1336.               /    |   \
  1337.      +--------++------++-------+
  1338.      | sphere || wood || level |
  1339.      +--------++------++-------+
  1340.  
  1341. 3. Select the "level" and select the menu Animate/Create/RPL. This
  1342.    function opens a requester allowing you to define a short RPL program
  1343.    to be associated with the selected object. Type the following program:
  1344.  
  1345.    "attr(wood->bril)=Time*100"
  1346.    EVAL DROP
  1347.  
  1348.                              - TUTORIAL 3.20 -
  1349.  
  1350. 4. Open the material window and load "wood" material into it. Play the
  1351.    animation and you will see how the object "level" modifies the
  1352.    brilliance of the material "wood".
  1353.  
  1354. Support example:
  1355. Examples/Materials/mat_RPL_anim
  1356.  
  1357. Hint:
  1358. It is pretty easy to think of more sophisticated ways to use this
  1359. technique to animate material properties. First of all, the procedure
  1360. itself could be much more complex. Furthermore, the object with which the
  1361. procedure is associated, could contain sub-objects, tags etc. For example,
  1362. the velocity tag (which defines the speed of the object for particle
  1363. system methods) could be used for defining the brilliancy of the object.
  1364. The higher the speed the more reflective the object becomes.
  1365.  
  1366. The techniques that have been presented here are not the only ones. There
  1367. are some even more fundamental ways of implementing material morphing.
  1368.  
  1369. For example:
  1370.  
  1371. - you can recreate the material for each frame instead of modifying the
  1372.   existing one. This makes it possible to define all the material
  1373.   properties without any limitations.
  1374.  
  1375. - you can define a set of materials, save them to a file and just load
  1376.   them in when the time reaches a certain value.
  1377.  
  1378. - you can write your own material handler formulas or RPL procedures
  1379.   which may depend on animation time.
  1380.  
  1381. - you can use SIZE method to resize spherical mappings with Local scope
  1382.   handlers about their center points with the effect of each material
  1383.   growing respectively.
  1384.  
  1385. The possibilities are many...
  1386.  
  1387.                              - TUTORIAL 3.21 -
  1388.  
  1389.  
  1390.  
  1391. Chapter 4 MODELLING
  1392. -------------------
  1393.  
  1394. 4.1 FREE FORM MODELLING AND POINT EDITING
  1395.  
  1396. In this chapter we shall investigate the modelling techniques of REAL 3D
  1397. which are best suited for creating free form objects such as a human face.
  1398. The approach is based on curves and mesh surfaces whose points can be
  1399. freely edited to obtain a desired shape. The usual procedure for creating
  1400. a free form surface is the following:
  1401.  
  1402. 1. Create some curves which contain enough information of the basic shape
  1403.    of the surface.
  1404.  
  1405. 2. Manipulate and edit curves if needed.
  1406.  
  1407. 3. Use a suitable tool to build a surface from the curves.
  1408.  
  1409. 4. Use linear and nonlinear modifications to edit the overall shape.
  1410.  
  1411. 5. Use point editing for details and fine tuning.
  1412.  
  1413. 4.1.1 CUrves
  1414.  
  1415. A curve, which is a sequence of pints in space, is an important object in
  1416. free form modelling. The free form tools of REAL 3D create surfaces by
  1417. combining curves in different ways. Another context where curve data is
  1418. needed regularly is animations: motions in REAL 3D animations can be
  1419. defined using curves.
  1420.  
  1421. There are two classes of curves in REAL 3D: open curves and closed curves.
  1422. The result of many operations depend on this difference. For example, when
  1423. defining a path for an object, a closed curve gives a different result
  1424. than an open one, even if the start and the end point of the latter
  1425. coincide.
  1426.  
  1427. A curve can be "evaluated" in two ways:
  1428. - as a polygonal line, "polyline"
  1429. - as a Cubic B-Spline
  1430.  
  1431. The term "evaluate" in this context means that the points which define the
  1432. curve and which are used to control the curve are used as an input in a
  1433. calculation process which produces another curve. The result curve, which
  1434. may not pass through the original points, is the actual shape which is
  1435. used.
  1436.  
  1437. A "polyline" simply connects the points of the curve with straight lines.
  1438. The curve will have sharp edges.
  1439.  
  1440. To create a polyline:
  1441.  
  1442. 1. Select Create/Controls/Open line.
  1443.  
  1444. 2. Use the left mouse button to add new pints to the end of the curve.
  1445.  
  1446. 3. When the curve is ready, use the right mouse button to end the
  1447.    definition.
  1448.  
  1449. The following special options are available during curve creation: - <DEL>
  1450. key removes the given points one by one. - <BACKSPACE> key closes/opens
  1451. the curve.
  1452.  
  1453. The B-Splines in R3D2 are controlled in a conventional way using control
  1454. polygons. The actual curve generated from control polygons can produce
  1455. somewhat surprising results until the properties of B-Splines are
  1456. understood. So called "knot-points" are the points that the curve actually
  1457. passes through.
  1458.  
  1459. To experiment with B-Splines, select a View window and use View/
  1460. Drawing_Set to open the Drawing Settings requester. Turn on "C. Polyg."
  1461. and "Knots" gadgets and make sure that "Curves" is also on.
  1462.  
  1463. Now try creating some B-Spline curves and observe the effects. With the
  1464. Drawing settings set as above, you will see the control polygon, a smooth
  1465. B-Spline curve (evaluated from the control polygon), and a series of
  1466. "knot points" on the curve.
  1467.  
  1468.                              - 4.1 TUTORIAL -
  1469.  
  1470. The first knot-point tends to be near the second control point, and there
  1471. are always two less knot-points than control points. This means there must
  1472. always be at least 4 control points. Don't become confused by closed
  1473. B-Splines, their first knot-point and last knot-point are the same point.
  1474.  
  1475. Open B-Spline:   knots = cpoints - 2
  1476. Closed B-Spline: knots = cpoints
  1477.  
  1478. When using Controls/B-Spline Ctrlp, you define the curve by defining the
  1479. control points. This usually produces the "smoothest" result, although it
  1480. requires some experience when it comes to shape control.
  1481.  
  1482. Controls/B-Spline Knot inputs the actual knot-points, and then constructs
  1483. a B-Spline which passes through these points. This method can be the
  1484. easiest to control.
  1485.  
  1486. Controls/B-Spline Curve shows the actual B-Spline curve while you define
  1487. new points.
  1488.  
  1489. The following simple test shows one new property of B-Spline curves:
  1490.  
  1491. 1. Select View/Drawing Set menu, deactivate "C. Polyg." gadget and exit
  1492.    Drawing settings requester by clicking OK.
  1493.  
  1494. 2. Draw a B-Spline curve.
  1495.  
  1496. 3. Select Modify/Linear/Move and move the curve to a new position.
  1497.  
  1498. You can see that even though your drawing settings leave the control
  1499. polygons invisible, when you modify B-Splines REAL 3D automatically uses
  1500. the control polygon representation for speed reasons.
  1501.  
  1502. 4.1.1.1 Special Curve Shapes 
  1503.  
  1504. There are several useful curve shapes available in the Create/Controls
  1505. menu. Some examples are presented below.
  1506.  
  1507. Circular curves can be created using the Circular Line or the B-Spline
  1508. Circle functions. Both work in a similar way:
  1509.  
  1510. 1. Select e.g. Create/Controls/Circular Line.
  1511.  
  1512. 2. Click the center point position.
  1513.  
  1514. 3. Shape a circle.
  1515.  
  1516. 4. Type a suitable point number for the curve when the program asks for
  1517.    "Subdivision" click OK. Usually the default value 8 is sufficient.
  1518.  
  1519. You can also easily create Helix curves:
  1520.  
  1521. 1. Select Create/Controls/B-Spline Helix.
  1522.  
  1523. 2. Define a suitable point number and an angle for the helix. For example,
  1524.    the default angle 6 gives about one revolution around the axis. Select
  1525.    OK.
  1526.  
  1527. 3. Click the center point position.
  1528.  
  1529. 4. Shape a cylinder, which defines the size of the helix.
  1530.  
  1531. 4.1.1.2 Multiple Control Points
  1532.  
  1533. The term "mutiple control point" means defining several control points at
  1534. the same location. The corresponding curve points are called "multiple
  1535. knot points". The alternatives and their results are:
  1536.  
  1537.                              - TUTORIAL 4.2 -
  1538.  
  1539. - Single control point - normal "smoothing"
  1540. - Double control point - almost sharp angle, still somewhat rounded
  1541. - Triple control point - sharp angle, or "corner" curve goes through the
  1542.   control point.
  1543. - Higher number of control points do not produce further changes in shape
  1544.  
  1545. Figure T4-1: The Effect of Single, Double, and Triple Control Points.
  1546.              (PICTURE: T4-1)
  1547.  
  1548. Controls/B-Spline Curve function uses triple knot points at the beginning
  1549. of the curve automatically to pull the curve to the given start and end
  1550. positions.
  1551.  
  1552. Note:
  1553. Multiple control points not only alter shape but also the "evaluation
  1554. speed". This means that when using such curves as motion paths, the speed
  1555. slows down in those curve parts which correspond to multiple control
  1556. points and can even stop at the triple knot points.
  1557.  
  1558. 4.1.2 Selecting Points
  1559.  
  1560. When free form modelling it is often necessary to make fine adjustments
  1561. to selected points on the surface of an object. Manipulation of the object
  1562. as a whole does not always allow for sufficient detail to get the desired
  1563. result. REAL 3D includes support for single and multiple point selection
  1564. enabling pointwise editing of freeforms. This kind of point editing is
  1565. only possible with free form curves and meshes. Point editing is not
  1566. possible with CSG objects such as cubes and spheres etc.
  1567.  
  1568. There are two ways to point edit freeforms:
  1569. - Direct B-Spline knot point editing one point at a time (using Move
  1570.   Knotpoint)
  1571. - Point editing using sub-groups.
  1572.  
  1573. The following examples demonstrates both:
  1574.  
  1575. 1. Draw an "s" with a B-Spline curve. Use e.g. Create/Controls/B-Spline
  1576.    Ctrlp., and define the shape using 8 control points.
  1577.  
  1578. 2. Select View/Drawing Set and activate "C.Polyg. , "Knots" and "Curve"
  1579.    gadgets, so that REAL 3D displays all the B-Spline information.
  1580.  
  1581. 3. Select the B-Spline curve you created.
  1582.  
  1583. 4. Select menu Modify/Freeform/Move Knot point and click near one of the
  1584.    "knots". Then move the mouse to a new position; you can see the curve
  1585.    follow the mouse. <LMB> click at the new position.
  1586.  
  1587. The second point editing method offers a more the abili to put selected
  1588. points in a "group" or "sub-group" relating to a free form. Example:
  1589.  
  1590. 5. While having <SHIFT> key down, drag a box around top half of the curve.
  1591.  
  1592. 6. Select Create/Structure/Group. A new object called "group" appears in
  1593.    myour Select window.
  1594.  
  1595. 7. Select a modification function, for example Modify/Linear/Rotate, and
  1596.    modify the "group". Only the points in the "group" are affected by the
  1597.    modification action while the rest of the curve remains unchanged.
  1598.  
  1599. 8. When the modifications are complete and you no longer need to reference
  1600.    the particular "group" that you have defined, use Modify/Hierarchy/
  1601.    Delete to delete the "group".
  1602.  
  1603.                              - TUTORIAL 4.3 -
  1604.  
  1605. This example demonstrated how to create a sub-group of a freeform, Groups
  1606. are "objects" in a hierarchy and they can be saved along with the freeform
  1607. object. Also, you can modify groups with all the modification functions,
  1608. Groups can even be animated: for example, the action of a mouth forming
  1609. words could be the metamorphic between "mouth" sub-group key shapes of a
  1610. "face" freeform!
  1611.  
  1612. 4.1.3 Freeforms as Levels
  1613.  
  1614. In the previous example "Selecting Points", the technique of creating
  1615. groups consisting of points of a curve was explained. The usage of a group
  1616. in many cases can be temporary and its modification straight forward.
  1617. Attention to its position in hierarchy was not of great importance.
  1618.  
  1619. However all freeforms can contain hierarchical sub-structures in the same
  1620. way as levels. The main intention for this feature is for storing groups
  1621. related to the freeform. If groups are multi-selected along with their
  1622. parent freeform, and a modification is applied , then the points of the
  1623. group will be modified at least twice; once for the freeform and once for
  1624. the group itself. If the groups are placed within the parent freeform then
  1625. accidental multiple-modification can be controlled.
  1626.  
  1627. Secondly, it is natural to put sub-groups of a freeform under itself in
  1628. the hierarchy.
  1629.  
  1630. The following examples of freeform surfaces will demonstrate how to use
  1631. this feature.
  1632.  
  1633. 4.1.4 Freeform Surfaces
  1634.  
  1635. REAL 3D includes a set of powerful functions which can create point
  1636. editable freeform meshes from curves. The program supports 3 mesh classes:
  1637. open meshes, cylindrical meshes, and tours meshes.
  1638. A mesh surface consists of a regular grid of curves which usually shows
  1639. the shape very clearly. The regular representation also allows some
  1640. special surface manipulation techniques such as "remapping" which is
  1641. described later.
  1642.  
  1643. Mesh objects are always hollow. This means that you can use the Boolean
  1644. operations to cut them, but you cannot use them as tools to cut with.
  1645.  
  1646. Freeform surfaces are similar to curves in the sense that the actual point
  1647. data defining the mesh can be "interpreted" or "evaluated" in several ways
  1648. such as:
  1649.  
  1650. - Polygonal surface
  1651. - Phong shaded surface
  1652. - Cubic B-Spline surface
  1653.  
  1654. The first two produce the same shape, although their shading is different.
  1655. B-Spline surface approximates the control polygon mesh in a similar way as
  1656. B-Spline curve approximates the control polygon: the result is a strongly
  1657. "smoothed", nicely curved surface. You can control the evaluation method
  1658. (the "type" of mesh; polygonal, phong, b-spline) using Modify/Freeform/
  1659. Type function.
  1660.  
  1661. 4.1.4.1 Example: Creating a Simple Mesh
  1662.  
  1663. The easiest way to produce a freeform surface is to use Create/Freeform/
  1664. Mesh function. This function produces an open, rectangular mesh with the
  1665. desired control point resolution. To make the tutorial example more
  1666. interesting, we will experiment using a freeform as a level as described
  1667. earlier in chapter 4.1.3, "Freeforms as Levels".
  1668.  
  1669.                              - TUTORIAL 4.4 -
  1670.  
  1671. 1. Hit <RAM>d to open Drawing settings requester, deselect "Knots" and
  1672.    "Curve", select "C, Polyg.", and exit the requester using the OK
  1673.    gadget.
  1674.  
  1675. 2, Take a top view - <RAM>z - and select Create/Freeform/Mesh.
  1676.  
  1677. 3. When REAL 3D asks the resolution of the mesh, suggesting 8*8, click OK.
  1678.  
  1679. 4. Shape a square in the same way that you would create a rectangle
  1680.    (remember: two separate <LMB> clicks on opposite corners- do not "drag"
  1681.    it!)
  1682.  
  1683. 5. REAL 3D creates a primitive "mesh". Double-click it on the Select
  1684.    window, and you notice that it becomes the current level even though
  1685.    it is a primitive.
  1686.  
  1687. 6. Next create some subgroups, this time by using the quick keyboard
  1688.    method. Press the <Ctrl><SHIFT> keys and drag a box around every 3rd
  1689.    point of each of the four middle rows, as shown in the figure T4-2.
  1690.    Create 3 more similar four point groups. The four groups together
  1691.    should cover the middle square of the mesh.
  1692.  
  1693. Figure T4-2: Sub-grouping a Mesh  (PICTURE: T4-2)
  1694.  
  1695. Now you have created a mesh with a sub-structure consisting of 4 groups.
  1696. The groups are in the right place in hierarchy, under the mesh itself.
  1697.  
  1698. Now modify the mesh in the following way:
  1699.  
  1700. 7. Hit <RAM>x to get front view.
  1701.  
  1702. 8. Select 1st and 3rd group and Modify/Linear/Move them upwards.
  1703.    Then select 2nd and 4th group and Modify/Linear/Move them downwards
  1704.    (see the figure below). This will produce a zig-zag of ridges and
  1705.    valleys on the mesh.
  1706.  
  1707. Figure T4-3: Modified Mesh  (PICTURE: T4-3)
  1708.  
  1709. Support example:
  1710. Examples/Freeform/simple_mesh
  1711.  
  1712. Now the test mesh is ready for visualization experiments (or lets "see"
  1713. what we've got). So far the simple mesh looks quite simple indeed, but by
  1714. adjusting the drawing settings a beautiful B-Spline surface is revealed:
  1715.  
  1716. 9. Hit <RAM>d, deactivate "C. Polyg", activate "Curves" and select OK.
  1717.  
  1718. A smooth surface is drawn. It is "smaller" than the original control
  1719. point mesh. Remember how B-Spline curves were influenced and controlled
  1720. by "control points" , B-Spline meshes are controlled in a similar way.
  1721. It will take 2 additional curves (in both u and v directions) to define a
  1722.  
  1723.                              - TUTORIAL 4.5 -
  1724.  
  1725. B-Spline mesh than for a similar polygon or Phong shaded mesh. You must be
  1726. careful when modelling to keep in mind that the mesh shape that you define
  1727. as a polygon will not yield the same shape if converted to a B-Spline.
  1728.  
  1729. To get a more detailed visualization of the B-Spline surface:
  1730.  
  1731. 10. Hit <RAM>d, adjust both "Curve Subdiv." "and "Surface Subdiv" to 7,
  1732.     activate "Draw v" gadget and select OK.
  1733.  
  1734. Figure T4-4: Dense Wire-frame Representation  (PICTURE: T4-4)
  1735.  
  1736. Now the densely draw wireframe very clearly shows the shape of the mesh
  1737. These tests have shown some useful properties of B-Splines:
  1738.  
  1739. - A small amount of control points are sufficient for producing curved
  1740.   surfaces making point editing easy and memory consumption low.
  1741. - Visualization density is independent of the shape.
  1742.  
  1743. Next we will get a ray traced visualization of the mesh:
  1744.  
  1745. 11. Use <RAM>s to open Render settings requester. Select Environment mode,
  1746. activate B-Spline->Phong gadget, adjust "Subdivision" to 1 and click OK.
  1747.  
  1748. 12. Use <RAM>r to render an image in your view window.
  1749.  
  1750. The B-Spline mesh is rendered using Phong-shading. This produces a faster
  1751. preview of the surface and will properly represent the shape of the
  1752. B-Spline. This technique is an excellent way of getting a quick preview
  1753. of your B-Spline object. Rendering B-Splines will take more time than a
  1754. quick Phong shaded representation and this can be used when modelling as
  1755. a time saving feature. Rendering using Phong shading looks smooth but
  1756. there may be some visible artifacts, especially the profile of the mesh
  1757. may look a bit "edgy".
  1758.  
  1759. The Phong shading quality can be controlled using "Subdivision" gadget in
  1760. the Render settings: the higher the value, the better the quality, but
  1761. unfortunately more memory and time is required. The value 1 is usually
  1762. suitable.
  1763.  
  1764.                              - TUTORIAL 4.6 -
  1765.  
  1766. To get true high-quality B-Spline shading you can deactivate the
  1767. "B-Spline->Phong" function gadget and set the subdivision back to 2. The
  1768. advantage of this method is that it shades with extremely good quality
  1769. with no "edge stepping", and still does not require much memory. The
  1770. complexity of the calculations do however involve longer rendering times.
  1771.  
  1772. Finally, try rendering the mesh in Draft mode. You automatically get
  1773. shaded polygons in shortest possible time.
  1774.  
  1775. 4.1.4.2 Coplanar Sweeping
  1776.  
  1777. Another easy way to define a surface is using a coplanar sweep. The
  1778. surface is obtained by sweeping a curve along another curve.
  1779. For example, to create "a roll of paper":
  1780.  
  1781. 1. First define a "profile curve", which shows the intersection shape of
  1782.    the surface. Take a side view (<RAM>y) and use Create/Controls/B-Spline
  1783.    Knot to draw a straight horizontal line between two points.
  1784.  
  1785. 2. Then Define a "sweeping curve": Use <RAM>x to get front view again and
  1786.    select Create/Controls/B-Spline Curve. Then draw a spiral, starting
  1787.    from the point where you see the "profile curve", drawing smaller and
  1788.    smaller circles (see the figure below).
  1789.  
  1790. 3. Multi-select the two curves and select Create/Freeform/Coplanar sweep.
  1791.  
  1792. 4. Delete the two curves (the mesh is created and you don't need the
  1793.    original two curves any longer).
  1794.  
  1795. Figure T4-5: Coplanar Sweep  (PICTURE: T4-5)
  1796.  
  1797. Support example:
  1798. Examples/Freeform/roll_mesh
  1799.  
  1800. Now lets bend "the paper roll". There is a problem: the profile curve was
  1801. a straight line, and there are no control points in the middle to bend.
  1802. You can verify this by activating Drawing Set/Control Polygon drawing
  1803. gadget and deactivating Curve gadget. Therefore:
  1804.  
  1805. 5. Select Modify/Freeform/Reparametrize, select "w" gadget and OK. A new
  1806.    curve should appear in the middle of the roll. If not, select the
  1807.    function again and use "h" gadget this time.
  1808.  
  1809. 6. Take a side view to the roll, select Modify/Bend Global/Move 2D, click
  1810.    at the top end and bottom end of the roll. Then grab the roll from the
  1811.    middle and bend it until the form is suitable.
  1812.  
  1813.                              - TUTORIAL 4.7 -
  1814.  
  1815. 4.1.4.3 Orthogonal Sweeping
  1816.  
  1817. Othogonal sweep is quite similar to the coplanar sweep. But while moving
  1818. the profile curve along the sweeping curve, the profile curve is also
  1819. rotated according to the direction of the sweeping curve.
  1820.  
  1821. An example - creating a freeform tube:
  1822.  
  1823. 1. Use <RAM>y to take a side view, Select Create/Controls/B-Spline
  1824.    Circular and create a 6 point B-Spline circle (the profile curve in
  1825.    this example); the size of it defines the radius of the tube.
  1826.  
  1827. 2. Hit <RAM>x for front view, select e.g. Controls/B-Spline Knot and draw
  1828.    a sweeping curve, starting from the middle of the profile curve. For
  1829.    best results, draw/modify the sweeping curve so that the profile circle
  1830.    is perpendicular to it at the beginning (see the figure below).
  1831.  
  1832. 3. Multi-select the profile curve and the sweeping curve, FOLLOW THIS
  1833.    SELECTION ORDER. Order is important Deselect all objects, press
  1834.    <shift>, click the profile curve on Select window, then click sweeping
  1835.    curve, then release <SHIFT>.
  1836.  
  1837. 4. Select Create/Freeform/Orthogonal.
  1838.  
  1839. Figure T4-6: Orthogonal sweep  (PICTURE: T4-6)
  1840.  
  1841. Support example:
  1842. Examples/Freeform/orth_sweep
  1843.  
  1844. It is important that you place the profile curve at the beginning of the
  1845. sweeping curve, orthogonally to it (see the figure above) because the
  1846. profile is swept relative to the initial position.
  1847.  
  1848. If the radius of the tube seems to vary too much, delete the mesh and then
  1849. use Modify/Freeform/Reparametrize to increase the points on the sweeping
  1850. curve control polygon before applying the orthogonal sweeping again.
  1851.  
  1852. 4.1.4.4 Rotate - Creating a Wine Glass
  1853.  
  1854. Rotation-function is a special case of orthogonal sweep: the sweeping
  1855. curve is circular. We use the classical example of creating a wine glass
  1856. for the demonstration:
  1857.  
  1858. 1. Hit <RAM>e to get a good orientation.
  1859.  
  1860. 2. Select Create/Controls/Axis and draw a vertical line on the window.
  1861.    The length of the line does not matter, except that a long line is
  1862.    helpful when drawing the glass profile.
  1863.  
  1864. 3. Select Create/Controls/B-Spline curve and start drawing the profile
  1865.    curve from the middle of the inner surface of the glass (that point
  1866.    is on the vertical axis). Shape the glass profile upwards, then down
  1867.    along the outer surface of the glass, and finally pull the curve back
  1868.    to the axis (see the figure below).
  1869.  
  1870. 4. Multi-select first the profile curve, then the axis, in this order.
  1871.  
  1872. 5. Select Create/Freeform/Rotate. When REAL 3D asks "Subdivision", enter
  1873.    6 and hit OK.
  1874.  
  1875.                              - TUTORIAL 4.8 -
  1876.  
  1877. Figure T4-7: Wine Glass  (PICTURE: T4-7)
  1878.  
  1879. Support example:
  1880. Examples/Freeform/wineglass
  1881.  
  1882. The rotation produces somewhat thinner glass than the original profile
  1883. curve. You can compensate for this easily by taking a top view and using
  1884. Modify/Linear/Size 2D to increase the diameter of the glass until it is
  1885. suitable. Also, increasing the subdivisions has a similar effect, but is
  1886. not wise to use too many control points which will consume extra memory
  1887. for this simple shape.
  1888.  
  1889. 4.1.4.5 Swinging
  1890.  
  1891. Swinging is a generalization of the previous rotation function. It inputs
  1892. a swinging curve, which scales the radius of the rotated profile curve or
  1893. moves it.
  1894.  
  1895. An example of applying swinging is the creation of a spiral shaped surface
  1896. as shown in the figure T4-8:
  1897.  
  1898. 1. To make accurate modelling easier, select View/Grid/Snap to Grid;
  1899.    also, hit <RAM>e to reset the scale.
  1900.  
  1901. 2. Use Create/Controls/Axis to draw a vertical line on the display.
  1902.    Modify/Properties/Name it "axis".
  1903.  
  1904. 3. Select Create/Controls/B-Spline Closed and draw a low rectangle to the
  1905.    left side of the axis. Use double clicks in each corner, to get
  1906.    suitably rounded edges. Modify/Properties/Name the curve as "profile".
  1907.  
  1908. 4. Take a top view by hitting <RAM>z. Then select Create/Controls/B-Spline
  1909.    Helix, set "Subdivision" to 24 and "Angle" to 24 (this will give about
  1910.    4 revolutions). Then shape the helix around the axis; the exact size of
  1911.    the radius does not matter. Modify/Properties/Name the helix as
  1912.    "swingcurve".
  1913.  
  1914. 5. Use <LMB> to place the "cursor-hot-point" at the center of the helix.
  1915.    We need the "cursor-point" to define the center of the helix so that we
  1916.    can easily define the bending axis for a radial bending that we are
  1917.    going to perform next. It is easy to define the 'pint when looking at
  1918.    the helix from the top view, then, when we go to the side view the
  1919.    middle point is already defined. Now hit <RAM>x.
  1920.  
  1921. 6. Make sure that the helix is still selected and choose menu Modify/Bend
  1922.    Linear/Size Radial. Then click in the middle of the bottom of the
  1923.    helix, and then in the middle of the top of the helix (so you draw a
  1924.    line along the original axis having the same height as the helix
  1925.    curve). Then "grab" the helix curve at its topmost outer edge point
  1926.    with a <LMB> click and move the point to the axis by clicking on the
  1927.    axis. The shape of the helix should then become conical.
  1928.  
  1929.                              - TUTORIAL 4.9 -
  1930.  
  1931. 7. Take a top view again (<RAM>z) and verify that all the 3 curves are
  1932.    properly positioned. Modify/Linear/Rotate the helix curve so that the
  1933.    lowest point, furthest away from the axis, starts from the profile
  1934.    curve. See the figure below.
  1935.  
  1936. 8. Then go back to the front view; select Modify/Linear/Extend, click in
  1937.    the middle of the bottom of the helix, then on the top, and extend the
  1938.    helix upwards, until the length is suitable. Also, move the profile
  1939.    curve in direction of the axis until the start point of the swinging
  1940.    curve is at the same height as the profile curve.
  1941.  
  1942. 9. <SHIFT> Multi-select the profile curve, the axis, and the swinging
  1943.    curve, in this order.
  1944.  
  1945. 10. Select Create/Freeform/Swing&Size. REAL 3D creates a freeform shape.
  1946.     You can then delete the three curves.
  1947.  
  1948. Figure T4-8: Example of Swinging  (PICTURE: T4-8)
  1949.  
  1950. Support example:
  1951. Examples/Freeform/swinging
  1952.  
  1953. 4.1.4.6 Cross-sectional Surface Construction
  1954.  
  1955. Surfaces can be constructed by joining cross-section curves together. This
  1956. is demonstrated by the following example creating a smooth edged "L"
  1957. shaped logotype letter.
  1958.  
  1959. The logotype consists of two flat polygons which form the front and back
  1960. surfaces, and a cylindrical B-Spline mesh which bevels the edges and forms
  1961. the side surface of the logo.
  1962.  
  1963. 1. Start the example by resetting the display: Activate the View, hit
  1964.    <RAM>e, select View/Type/Parallel, and activate View/Grid/Snap to Grid,
  1965.    and select View/Drawing Set/Curves & Knots & C. Polyg.
  1966.  
  1967. 2. Select Create/Visibles/Polygon and draw a "L" shape (figure T4-9).
  1968.  
  1969.      +---+
  1970.      |   |
  1971.      |   |
  1972.      |   |
  1973.      |   |
  1974.      |   |
  1975.      |   |
  1976.      |   |
  1977.      |   |
  1978.      |   |
  1979.      |   |
  1980.      |   |
  1981.      |   |
  1982.      |   |
  1983.      |   |
  1984.      |   +----------+
  1985.      |              |
  1986.      |              |
  1987.      |              |
  1988.      +--------------+
  1989.  
  1990. Figure T4-9: Front Surface of the Logo is a Polygon
  1991.  
  1992. 3. The first cross-section curve must match the polygon edge. Because we
  1993.    use B-Splines, we must use triple control points in every corner Select
  1994.    Create/Control/B-Spline Closed, start from top left corner of the
  1995.    polygon and draw the curve along polygon edge clockwise, carefully
  1996.    <LMB> clicking 3 times in each corner. After defining the points in the
  1997.    last (bottom left) corner, finish the curve by hitting <RMB>.
  1998.  
  1999. If you did everything correctly, the new curve travels exactly along the
  2000. edge of the polygon.
  2001.  
  2002. Just as we used triple control points to pull a curve to a point, we now
  2003. use the triple curves to pull a B-Spline surface to a curve!
  2004.  
  2005.                              - TUTORIAL 4.10 -
  2006.  
  2007. 4. Select the curve and use Modify/Structure/Duplicate twice, so that the
  2008.    result is three identical curves.
  2009.  
  2010. This triple curve technique is important when modelling with B-Splines and
  2011. you will probably need it frequently. But now, lets create the next cross-
  2012. section; a slightly larger rounded B-Spline, around the polygon.
  2013.  
  2014. 5. Select Create/Controls/B-Spline Closed and start drawing a new curve
  2015.    around the polygon. This time maintain a suitable constant distance
  2016.    from the polygon, say two grid units. Remember this distance: it will
  2017.    be used as a general "rounding" radius during the later steps of this
  2018.    example. To get the best result, use the same amount of control points
  2019.    as in previous curves, three points at each corner, but do not put them
  2020.    at the same positions.
  2021.    Distribute the three points symmetrically around each corner as shown
  2022.    in the figure T4-10: one point 2 grid units before the corner, one at
  2023.    the corner and one point two grid units after the corner (in the figure
  2024.    T4-10 it is assumed that the first three curves were drawn starting
  2025.    from the top left corner). Remember that you can undo points using
  2026.    <Del> key.
  2027.  
  2028. Figure T4-10: Fourth Cross-section  (PICTURE: T4-10)
  2029.  
  2030. The 4th curve was drawn to the same plane as the polygon. This will allow
  2031. the B-Spline surface to join the polygon smoothly and tangentially. The
  2032. next cross-section will make the surface bend backwards:
  2033.  
  2034. 6. Use Modify/Structure/Duplicate to create a copy of the 4th curve.
  2035.  
  2036. 7. Take a side view (<RAM>y) and move the copy two grid unit backwards.
  2037.  
  2038. 8. Duplicate the 5th curve and move it again, say, 4 grid units backwards.
  2039.  
  2040. 9. Duplicate the 6th curve and move it 2 grid units backwards.
  2041.  
  2042. After steps 5-9, you should have four identical B-Spline curves in a row,
  2043. as in the figure below. Continue working using the side view in the
  2044. following way.
  2045.  
  2046. 10. Multi-select the first three curves (the ones matching the front
  2047.     polygon edge) and Modify/Structure/Duplicate them.
  2048.  
  2049. 11. Move the three copies 2+4+2 = 8 grid unit backwards, to the same
  2050.     position as the backmost curve is located.
  2051.  
  2052. 12. Select the front polygon, duplicate it, and move it to the back as
  2053.     well.
  2054.  
  2055. 13. Use <RAM>x to go back to the front view and verify that all the items
  2056.     are correctly centered around the first polygon.
  2057.  
  2058. 14. Now multi-select all the cross-section curves in their creation order
  2059.     (do not include polygons) and select Create/Freeform/Build from
  2060.     Curves.
  2061.  
  2062. 15. If the result seems to be OK, delete the curves.
  2063.  
  2064.                              - 4.11 TUTORIAL -
  2065.  
  2066. Figure T4-11: Side View of the Section Curves and the Final Surface
  2067.               (PICTURE: T4-11)
  2068.  
  2069. Support example:
  2070. Examples/Freeform/Logo.
  2071.  
  2072. When using cross-sectional surface construction, for best results, each
  2073. curve should have the same number of pints and the curves should be
  2074. oriented in the same direction (not one clockwise and one in a counter
  2075. clockwise loop). Also the start points of the section curves should be
  2076. located along the same longitudinal direction.
  2077.  
  2078. 4.1.4.7 Mesh-Pixel Tool
  2079.  
  2080. When using the second variation of the pixel tool, Mesh-Pixel Tool, the
  2081. bitmap is taken as a height map when creating a free form surface. The
  2082. brighter the pixel colour, the higher the peak there will be on the
  2083. correspnding place of the surface.
  2084. For example, you can create a free form ground surface for a landscape:
  2085.  
  2086. 1. Start a paint program and draw a small (try 20*20 pixels) height map
  2087.    or edit a digitized map image (remember that the intensity of the
  2088.    colour red defines the height of the bump). Save this map as a brush
  2089.    to the ram disk.
  2090.  
  2091. 2. Choose Create/Freeform/Mesh-Pixel Tool. Now the file selector is
  2092.    displayed, select the brush you saved to ram disk.
  2093.  
  2094. 3. Next, you can define the size and location of the object mesh that
  2095.    will be created by defining a rectangle in a View Window.
  2096.    The object is then created.
  2097.  
  2098. 4.1.5 Modifying Curves and Meshes
  2099.  
  2100. The functions of the menu Modify/Freeform can be used to manipulate free
  2101. form objects in many ways.
  2102.  
  2103. Remap function is a very powerful feature of REAL 3D. With it, you can
  2104. modify the number of the points with which a curve or a mesh is
  2105. represented. Increasing the point number makes it possible to add more
  2106. detail to the shape. The basic form can first be roughly defined then the
  2107. remap function can be used to add more points and thus obtain more control
  2108. over local details.
  2109.  
  2110. The ability to decrease the point number is useful if a shape must be
  2111. substantially altered, a small number of points is easier to control.
  2112. Remember of course that if you first decrease the point number and then
  2113. increase back to the original number, you do not always get the same exact
  2114. shape. A small number of points cannot contain the same amount of detail
  2115. as a larger number of points.
  2116.  
  2117.                              - TUTORIAL 4.12 -
  2118.  
  2119. To modify the pointnumber of a mesh:
  2120.  
  2121. 1. Select the mesh.
  2122.  
  2123. 2. Select Modify/Freeform/Remap.
  2124.  
  2125. 3. REAL 3D displays the current counts and requests the new point counts.
  2126.    Define suitable numbers and click OK.
  2127.  
  2128. Another reason for decreasing the point count is related to memory: if you
  2129. cannot render a free-form surface because of lack of memory, you can
  2130. reduce the number of points in the scene until the rendering succeeds.
  2131.  
  2132. Modify/Freeform/Reparametrize is a special case of Remapping. It can only
  2133. increase the point count-it doubles the amount of control points in each
  2134. dimension, but it does this so that the shape does not change. Normal
  2135. remapping may cause minor changes.
  2136.  
  2137. The distribute-function re-distributes the control points of a curve
  2138. evenly along the curve length. This can be used to smoothen the shape of
  2139. a curve or a mesh. For example directly hand drawn or bitmap vectorized
  2140. curves tend to have unwanted irregularities; these can be eliminated with
  2141. this function. (Another way to do this kind of modification is to Remap
  2142. the point count down until the shape is smooth).
  2143.  
  2144. If the object to be re-distributed contains relatively few points, the
  2145. operation may change the shape quite radically. The results of
  2146. distributing a mesh which is densely populated with points are easier
  2147. to predict.
  2148.  
  2149. When creating a curve, the curve can be closed using the <Backspace> key
  2150. option. An open curve can be closed afterwards using the closing function:
  2151.  
  2152. 1. Select the curve.
  2153.  
  2154. 2. Select Modify/Freeform/Open/Close.
  2155.  
  2156. 3. Select "u" gadget and hit OK.
  2157.  
  2158. Note that you can use the same function to open the curve; by deactivating
  2159. the "u" gadget.
  2160.  
  2161. In a similar way, you can use the function to change the mesh type between
  2162. open, cylindrical, and torus types.
  2163.  
  2164. It is possible to connect two curves together using the Concatenate
  2165. function:
  2166.  
  2167. 1. Select the curves that you want to concatenate (join).
  2168.  
  2169. 2. Select Modify/Freeform/Concatenate.
  2170.  
  2171. A new curve is created; original curves remain unaltered. If the result is
  2172. not what you wanted, just delete the new curve and check the following
  2173. things:
  2174.  
  2175. - If the second curve was concatenated (joined) to the beginning of the
  2176.   first, multi-select the curves in the opposite order before applying
  2177.   the concatenate function.
  2178.  
  2179. - If the concatenation (joining) occurs from the beginning of the first
  2180.   curve, not from the end, select the first curve and use Modify/Freeform/
  2181.   Swap Direction function to reverse the curve before concatenation.
  2182.   Similarly, if concatenation uses the wrong end of the second curve,
  2183.   swap the direction of that curve before joining.
  2184.  
  2185. In the same way, you can concatenate meshes. But with meshes there are
  2186. even more ways to do the concatenation. Each mesh has four sides instead
  2187. of two ends. The additional control is provided by "Exchange u&v"
  2188. function, which exchanges the two mesh dimensions internally.
  2189.  
  2190. In general, this u & v orientation and evaluation direction of freeforms
  2191. play quite a big role in freeform modelling. When you activate View/
  2192. Drawing Set/Knots gadget, REAL 3D displays u & v symbols and arrows on
  2193. curves to assist you.
  2194.  
  2195.                              - TUTORIAL 4.13 -
  2196.  
  2197. Many freeform surface manipulations are easier to perform by splitting
  2198. the surface back to curves.The curves can then be manipulated and then
  2199. surfaces can be rebuilt from curves. The menu Modify/Freeform/Surf. to
  2200. Curves performs this task. You can control the direction in which the
  2201. surface is split into curves by using Exchange u&v function.
  2202.  
  2203. For example, to break a mesh into two:
  2204.  
  2205. 1. Select the mesh.
  2206.  
  2207. 2. Select Modify/Freeform/Surf. to Curves; the curves are produced, and
  2208.    you can delete the original surface.
  2209.  
  2210. 3. Multi-select the first half of the curves and use Create/Freeform/Build
  2211.    from Curves function. Then select the rest of the curves and apply
  2212.    "Build from Curves" again.
  2213.  
  2214. You may also include the "break-point curve" in both halves or even
  2215. duplicate it twice to get a triple curve before joining the curves.
  2216. This will help to close the gap between the surface halves when using
  2217. B-Splines.
  2218.  
  2219. Another example is removing a point from a mesh. To do this, you must
  2220. remove the whole curve containing the point:
  2221.  
  2222. 1. Select the mesh and apply Freeform/Modify/Surf. to Curves.
  2223.  
  2224. 2. Delete the curve that contains the desired point.
  2225.  
  2226. 3. Join the curves back to form a surface.
  2227.  
  2228. 4. If operation was successful, delete the original mesh.
  2229.  
  2230. 4.1.6 Bending Functions
  2231.  
  2232. In addition to conventional modification functions such as move, rotate
  2233. or size, REAL 3D contains a large set of nonlinear functions for freeform
  2234. deformations.
  2235.  
  2236. The first group of such functions consists of "bending" functions. There
  2237. are 24 different bending variations available: four different bending
  2238. functions combined with six different bending mode combinations.
  2239.  
  2240. All the bending functions of the Modify menu first require an input line
  2241. (curve) called the "bending axis", which defines the bending interval.
  2242. The following picture illustrates the differences between the bending
  2243. functions:
  2244.  
  2245. Figure T4-12: Bending  (PICTURE: T4-12)
  2246.  
  2247. In the picture, the arrow on the left (1-2) is the bending axis, and the
  2248. straight cylinder is the original object. The small arrow (3-4) defines
  2249. the amount of bending. The lines 1-2, and 3-4 are defined by <LMB> clicks.
  2250.  
  2251. Local bending affects the object only inside the bending interval.
  2252.  
  2253. Global bending affects the object everywhere.
  2254.  
  2255. End point bending bends the object so that in the start point of the
  2256. bending axis the bending effect is zero and the effect grows to the
  2257. direction of the axis.
  2258.  
  2259.                              - TUTORIAL 4.14 -
  2260.  
  2261. Linear bending is the skew transformation. (a straight bend originating
  2262. from the end of the cylinder defined by the point "1".)
  2263.  
  2264. For example, to bend a small curve to a tube mesh:
  2265.  
  2266. 1. Select the mesh.
  2267.  
  2268. 2. Select Modify/Bend Local/Move 2D.
  2269.  
  2270. 3. Draw a line in the middle of the tube and to the direction of the tube;
  2271.    the length and position of the line defines the interval (the interval
  2272.    is where the bending affects the object).
  2273.  
  2274. 4. Grab the object by clicking with the left mouse button.
  2275.  
  2276. 5. Move the mouse to the direction you want to bend the object.
  2277.  
  2278. 6. When the result is OK, use the left mouse button again.
  2279.  
  2280. Each bending method includes two sets of bending options. If the "Move"
  2281. version is used, all the points of the object modified are moved as much
  2282. to the bending direction regardless of the distance from the point to the
  2283. bending axis. If the option "Size' is used, bending becomes
  2284. multiplicative: the further the point lies from the bending axis, the more
  2285. it is moved. The following picture demonstrates this:
  2286.  
  2287. Figure T4-13: Bend&Move vs Bend&Size in Local 2D Bending  (PICTURE: T4-13)
  2288.  
  2289. When using the Bend&Size mode, the distance from the bending axis to the
  2290. object is important. For example in Fig T4-13, the bending axis was
  2291. positioned precisely to the left edge of the cylinder half, therefore that
  2292. edge of the object remained the same in the modification. Also the
  2293. distance from the point which you "grab" to the bending axis is important:
  2294. the greater the distance, the more accurate control you have. If the point
  2295. lies on the axis, moving the pointer even a little bit produces a
  2296. dramatically change in the shape.
  2297.  
  2298. The second set of bending options (3D) defines how the coordinate
  2299. direction (the plane perpendicular to where the bending is defined - could
  2300. also be called the depth coordinate direction) is taken into account in
  2301. the modification. When the "2D" bend function is used, the bending affects
  2302. the object on a 2D plane and the depth coordinate is not considered.
  2303. The option "3D" affects the object in the depth direction precisely in the
  2304. same way as . in the direction of the bending axis; the cursor defines the
  2305. middle point of the bending interval in the depth direction. In other
  2306. words it affects the object in 3 planes with the "bending axis" defining
  2307. the center point.
  2308.  
  2309. The "Radial" option directs the modification radially away from the
  2310. bending axis.
  2311.  
  2312. Figure T4-14: Bending Examples  (PICTURE: T4-14)
  2313.  
  2314.  
  2315.                              - TUTORIAL 4.15 -
  2316.  
  2317.  
  2318. 4.1.7 Example: Creating a B-Spline Head
  2319.  
  2320. Use one View window and one Select window for this example.
  2321.  
  2322. 1. Take a side view (<RAM>y) and create a profile curve of your face
  2323.    using the function Create/Controls/B-Spline Curve; about 20 points
  2324.    is enough. This function automatically creates triple control points
  2325.    at both ends thus pulling the curve to them. Remember that by using
  2326.    triple control points you can produce sharp edges, double control
  2327.    points produce rounded edges while single control points only pull the
  2328.    curve slightly towards them producing a smooth curve. If the result
  2329.    is not what you expected, use <Del> key to delete misplaced points as
  2330.    you are forming the curve.
  2331.  
  2332. Figure T4-15: Face Profile  (PICTURE: T4-15)
  2333.  
  2334. 2. Modify the created profile curve using Modify/Freeform/Move Knotpoint
  2335.    so that it really starts to look like your profile. This function finds
  2336.    the nearest knot point of the curve (or mesh) and allows you to move
  2337.    it.
  2338.  
  2339. 3. Create six more cross-section curves each defining a new radial
  2340.    "slice" so that the left side of the head is fully represented.
  2341.  
  2342. Figure T4-16: Cross-sections.  (PICTURE: T4-16)
  2343.  
  2344. 4. Take a view from above. Select all curves except the first, set
  2345.    "Project/Macro/Record", rotate the curves about 25 degrees, end macro
  2346.    recording and select Project/Macro/Spread Current. Hand-adjust the
  2347.    first curve and make minor hand adjustments to the other curves if
  2348.    necessary. The result should be similar to figure T4-17.
  2349.  
  2350. Figure T4-17: Cross-sections, Top View  (PICTURE: T4-17)
  2351.  
  2352.                              - TUTORIAL 4.16 -
  2353.  
  2354. 5. Select all curves in reverse order, duplicate them, and "mirror" them
  2355.    in order to create curves for the right side of the head.
  2356.  
  2357. Figure T4-18: Cross-sections Doubled and Mirrored.  (PICTURE: T4-18)
  2358.  
  2359. 6. Select all curves and execute Create/Freeform/Build From Curves.
  2360.    This creates a B-Spline mesh which interpolates through all selected
  2361.    cross-section curves. Delete the curves. (NOTE: you can save the
  2362.    project at any time to be able to start again from any point)
  2363.  
  2364. 7. Now comes the trick! There are some advantages in creating the head
  2365.    using vertical cross-sections (for example, you only have to create 50%
  2366.    of the curves needed for the head, because the head is symmetrical).
  2367.    However, some details on the face can be defined more easily using
  2368.    horizontal cross-sections. So swap the surface parametrization using
  2369.    the function Modify/Freeform/Exchange_u_&_v and then execute the
  2370.    function Modify/Freeform/Surf.to_Curves. Delete the mesh and modify
  2371.    the horizontal cross-section curves (you may have to close them if they
  2372.    are open, using Modify/Freeform/Open/Close).
  2373.  
  2374.  
  2375. Figure T4-19: Horizontal Cross-sections  (PICTURE: T4-19)
  2376.  
  2377. 8. Now create the head again with Create/Freeform/Build_From_Curves,
  2378.    Modify/Freeform/Exchange_u_&_v, Modify/Freeform/Surf.to_curves, edit
  2379.    vertical cross-sections and so on until your B-Spline head is perfect.
  2380.  
  2381. 9. You can use more dense wire-frame representation to render the scene
  2382.    by setting the Surface Subdiv field in the View/Drawing_Set requester
  2383.    to 5.
  2384.  
  2385. Figure T4-20: Dense Wireframe of the Head  (PICTURE T4-20)
  2386.  
  2387.                              - TUTORIAL 4.17 -
  2388.  
  2389. 10. Finally you can render an image: select the menu View/Render/Settings,
  2390.     set Mode to LAMPLESS, Subdivisions to 1 and render the head.
  2391.  
  2392. Figure T4-21: Ray Traced B-Spline Heads  (PICTURE: T4-21)
  2393.  
  2394. Support example:
  2395. Examples/Freeform/Head
  2396.  
  2397.                              - TUTORIAL 4.18 -
  2398.  
  2399. 4.2 BOOLEAN OPERATIONS
  2400.  
  2401.  
  2402. Boolean operations offer one of the most powerful means of creating and
  2403. modifying objects.
  2404.  
  2405. Let's consider a situation where an engineer cuts an object made of pine
  2406. with a tool that has just been painted. Since the paint on the tool is
  2407. still wet, it sticks on the object and the cut surface is "painted" with
  2408. the wet paint. The engineer notices this and replaces the tool with
  2409. another clean tool, the new cut surface is clean showing the beautiful
  2410. texture of the pine. The Boolean operations of REAL 3D work in a similar
  2411. way. All Boolean operations are executed in the same way.
  2412.  
  2413. 1. First select an object to be operated on. (Work piece or target)
  2414.  
  2415. 2. Then select an object to operate with. (the Tool)
  2416.  
  2417. Note:
  2418. This is a multi-select process where the order of selection is important.
  2419. Target first, then with the <SHIFT> key down click on the tool.
  2420.  
  2421. 3. Choose an operation.
  2422.  
  2423. Both "parameters" of the Boolean operation should be selected when you
  2424. execute the operation.
  2425.  
  2426. A simple example of a object created with a Boolean operation is a lens.
  2427. A lens can be thought of as the intersection of two partially intersecting
  2428. spheres.
  2429.  
  2430. 1. Create a sphere and Modify/Properties/Name it as "lens".
  2431.  
  2432. 2. Modify/Structure/Duplicate the sphere and move the copy to the right
  2433.    so that the spheres are partially intersecting (see the figure below).
  2434.  
  2435. 3. Use modify/Structure/Name to rename the copy as "tool".
  2436.  
  2437. 4. Select the first sphere (lens).
  2438.  
  2439. 5. Press <SHIFT> down and select the second tool sphere so that the both
  2440.    spheres become selected.(multi-select)
  2441.  
  2442. 6. Choose Create/Boolean/AND.
  2443.  
  2444. The resuming object will be the part of the work piece that is inside the
  2445. tool. It is a lens. In the View windows there are still two partially
  2446. intersecting wireframes of spheres visible. Therefore:
  2447.  
  2448. 7. Select the menu Create/Boolean/Rethink.
  2449.  
  2450. This creates a new wireframe representation for the resume of the Boolean
  2451. operation.
  2452.  
  2453. If you look at the Select window, you can see that the two objects have
  2454. been replaced with a new level having the name "lens (A)". The symbol (A)
  2455. shows the object type, Boolean AND. If you render your creation, you will
  2456. notice that you really have created a lens shaped body. If you change the
  2457. material of the lens to glass, it can be used as a magnifying glass!
  2458.  
  2459. The results of different Boolean operations between the two spheres are:
  2460.  
  2461. Figure T4-22: Boolean Operations  (PICTURE: T4-22)
  2462.  
  2463.                              - TUTORIAL 4.19 -
  2464.  
  2465. OR is the default operation, which is executed if no other operation is
  2466. specified by the user. In other words, when you create objects, you add
  2467. matter from one to the other.
  2468.  
  2469. Note:
  2470. If you position two objects in OR operation so that they partially
  2471. intersect, their materials will not fuse. What happens is that REAL 3D
  2472. will automatically remove material from the second object to make room
  2473. for the first object.
  2474.  
  2475. Let's continue experimenting with the lens object. Select the new level
  2476. created with the Boolean operation and select Modify/Properties/
  2477. Attributes. The AND gadget on the top right corner of the requester is
  2478. set, and OR gadget is unset.
  2479.  
  2480. If you double-click the "lens" level on the Select window to make it the
  2481. current level, you will find the two original spheres under it.
  2482.  
  2483. These observations reveal the nature of Boolean operations in REAL 3D:
  2484. again, everything is based on hierarchy, and a Boolean operation is just
  2485. a hierarchy level. The objects used in these operations can be complex
  2486. ones with many levels of hierarchy, and they can contain objects that
  2487. resume from previous Boolean operations.
  2488.  
  2489. This means that instead of using the procedure described above you can
  2490. also make Booleans by adjusting the "attributes" of the level. When you
  2491. create a new level, its type is by default OR, but if you want to do
  2492. intersection instead of union you can change it to AND using Modify/
  2493. Properties/Attributes function. After that, just add the parameters (the
  2494. target and tool) under the level. To modify the lens further, we can cut
  2495. an oval hole through the lens:
  2496.  
  2497. 8. Make the boolean AND level "lens" the current level.
  2498.  
  2499. 9. Create a cylinder and stretch it to an oval form.
  2500.  
  2501. 10. Locate the cylinder so that its axis goes through the focal points of
  2502.     the lens (see the figure below). Make sure that the cylinder is long
  2503.     enough to pass through the whole lens.
  2504.  
  2505. The hierarchy of the scene is now the following:
  2506.  
  2507.      Root
  2508.         lens(A)
  2509.           lens
  2510.           tool
  2511.           cylinder
  2512.  
  2513. Now render an image of the object. You will notice that there is no lens
  2514. with a hole but rather a hole without a lens! All right, actually one
  2515. thing was forgotten deliberately, namely inverting the volume of the
  2516. cylinder. The resume was the intersected volume inside all three
  2517. primitives. To get the correct result:
  2518.  
  2519. 11. Select cylinder.
  2520.  
  2521. 12. Select Modify/Properties/Attributes.
  2522.  
  2523. 13. Activate "Inverted" gadget and click OK.
  2524.  
  2525. Now render the object again to see what was originally expected. If a
  2526. member of a Boolean operation is inverted, the exterior of it is used to
  2527. intersect other objects. In other words, inverted objects cut material in
  2528. the volume that they occupy leaving untouched the volume exterior to them.
  2529.  
  2530.                              - TUTORIAL 4.20 -
  2531.  
  2532. Figure T4-23: A Lens with an Oval Hole  (PICTURE: T4-23)
  2533.  
  2534. The object volume inversion is handled automatically when you use Boolean
  2535. AND NOT operation. Then all the objects except the first selected one will
  2536. automatically get the "Inverted" flag set.
  2537.  
  2538. Note:
  2539. As the example already shows, Boolean operations may contain any number of
  2540. objects. In previous REAL 3D versions, AND was a binary operation
  2541. accepting only two parameters.
  2542.  
  2543. In REAL 3D it is possible to execute the Boolean operations so that the
  2544. tool affects not only the volume but also the surface of the object that
  2545. is operating on. This is a very useful feature of REAL 3D. For example,
  2546. if you cut a notch in a pine board using a "shiny reflecting" (material
  2547. attributes) tool and use AND NOT "with paint operation, you get a "shiny
  2548. reflecting" notch on the board.
  2549.  
  2550. Likewise, if you use a red lathe you get a red notch. And if you use a
  2551. chimney to cut a notch, you get a piece of wood with a notch of brick
  2552. coating. On the other hand, if you use any of the non painting operations,
  2553. you get a clean notch of pine on your pine board (the wood texture of the
  2554. pine board "x-rays" right through the object so that you get a continuity
  2555. of the texture). In this case the surface of the tool does not affect
  2556. the object that is operated on.
  2557.  
  2558. To test this feature:
  2559.  
  2560. 14. Open palette window (<RAM>p) and change the current colour to black.
  2561.     Verify the colour selection by pressing OK gadget and close the
  2562.     palette window.
  2563.  
  2564. 15. Select the cylinder and use Modify/Properties/Colour.
  2565.  
  2566. 16. Open the Modify/Properties/Attributes requester and activate the
  2567.     "Paints" gadget.
  2568.  
  2569. 17. Render an image.
  2570.  
  2571. This time you got a real black hole!
  2572.  
  2573. You can obtain the same results by using Create/Boolean/AND with Paint or
  2574. AND NOT with Paint functions directly, instead of changing the attributes
  2575. afterwards.
  2576.  
  2577. Finally, we can make a section diagram of the lens by spItting the lens in
  2578. two, using a plane surface. You are already familiar with the two
  2579. dimensional plane primitives; circles, rectangles, and triangles. When
  2580. used in Boolean operations, these plane primitives are not extremely thin
  2581. two dimensional surfaces, but, on the contrary, infinitely thick halves of
  2582. space. In other words, a plane divides the space into two halves and
  2583. involves one of these halves. The wireframe representations of plane
  2584. primitives have a small peak that tells you which side of the plane is
  2585. defined by the primitive.
  2586.  
  2587. If you set a plane so that it goes through the focal points of a lens,
  2588. and then execute AND NOT operation, the half of the lens that is on the
  2589. same side of the plane as the spike is removed. The AND operation would
  2590. preserve the half that is on the spike's side of the plane.
  2591.  
  2592.                              - TUTORIAL 4.21 -
  2593.  
  2594. To remove half of a lens:
  2595.  
  2596. 18. Make "lens (A)" the current object.
  2597.  
  2598. 19. Create some plane primitive e.g. a rectangle and place it so that it
  2599.     goes through the focal points of the lens.
  2600.  
  2601. 20. Render.
  2602.  
  2603. Support example:
  2604. Examples/Objects/split_lens
  2605.  
  2606. Figure T4-24: A Split, Drilled Lens.  (PICTURE: T4-24)
  2607.  
  2608. Now you have made half a lens with an oval hole through it. To REAL 3D it
  2609. is a very simple object. You can, for instance, stretch it if you want.
  2610. In a similar way you can create more and more complex objects which can be
  2611. saved to disk, and used to create new objects, As you complete useful new
  2612. objects and tools, using the program becomes easier and faster.
  2613. When you execute a Boolean operation, the hierarchical structure of the
  2614. object is modified to reflect the resuming object. If you move "lens (A)"
  2615. object, you notice that the "hole" faithfully follows the cube when you
  2616. relocate the cube. On the other hand, you can select the hole and make it
  2617. bigger by re-sizing the cylinder and immediately get another result.
  2618. Or you can even create animations where the hole moves, or where the
  2619. progression of the hole being drilled is animated, or an object being
  2620. turned in a lathe etc. can be demonstrated. Hierarchical implementation of
  2621. Boolean operations makes all this very easy in REAL 3D.
  2622.  
  2623. 4.2.1 Wireframes of Booleans
  2624.  
  2625. Wireframe representation of Boolean operations do not necessarily
  2626. correspond to the true shape of the object. The easiest way to modify the
  2627. wireframe of a boolean operation is to use Modify/Boolean/Rethink
  2628. functions:
  2629.  
  2630. 1. Select the object to be modified
  2631.  
  2632. 2. Select Create/Boolean/Rethink All.
  2633.  
  2634. 3. If the resume is not good enough, use the Undo function.
  2635.  
  2636. This operation makes all wireframe line segments outside the volume of the
  2637. selected Boolean object invisible, usually giving a better representation.
  2638. The result of this automatic wireframe modification can then be further
  2639. improved by hand. Drawing curves and placing them under the Boolean
  2640. operation level can be helpful, and possibly by making some wireframes
  2641. invisible.
  2642.  
  2643. Rethink functions may sometimes leave not enough wireframe. REAL 3D will
  2644. try to represent the objects with a minimum number of lines.
  2645.  
  2646.                              - TUTORIAL 4.22 -
  2647.  
  2648. The difference between Rethink and Rethink All is that Rethink All
  2649. regressively goes through the hierarchy under the selected objects,
  2650. whereas Rethink considers only the highest hierarchy level of the
  2651. selected objects.
  2652.  
  2653. 4.3 OBJECT AT TRIBUTES
  2654.  
  2655. You can use the Modify/Properties/Attributes operation to get some
  2656. information about the objects and to modify this information when
  2657. necessary. For example:
  2658.  
  2659. - An object can be made invisible in the editor.
  2660. - An object can be protected from modifications.
  2661. - An object can be made infinite by removing so walled standard limits
  2662.   from it.
  2663. - An object can be made hollow.
  2664. - The bounding planes, i.e. the surfaces at its ends, can be removed
  2665.   from a hollow object.
  2666. - An object's ray tracing attributes can be changed: it can be made
  2667.   invisible, non-existent, shadowless, motion blurred or matt shaded in
  2668.   ray trace rendering.
  2669. - Object volume and Boolean operation properties can be modified (AND/OR
  2670.   type, volume inversion, "Paints" property).
  2671.  
  2672. To make a cone invisible in the wireframe mode:
  2673.  
  2674. 1. Select the cone.
  2675.  
  2676. 2. Choose Modify/Properties/Attributes.
  2677.  
  2678. 3. Set the WF-Invisible field on.
  2679.  
  2680. 4. Choose OK.
  2681.  
  2682. After this the cone is invisible in wireframe rendering, but you can still
  2683. notice its existence in the Select window and in ray trace rendering.
  2684.  
  2685. To make a cylinder into a thin walled tube:
  2686.  
  2687. 1. Select the cylinder.
  2688.  
  2689. 2. Choose Modify/Properties/Attributes.
  2690.  
  2691. 3. Set the Hollow, No 1 st BP and No 2nd BP fields on.
  2692.  
  2693. 4. Choose OK.
  2694.  
  2695. Note:
  2696. If the object is not hollow, you cannot remove its bounding planes.
  2697.  
  2698. Note:
  2699. When the bounding planes are removed from a cube, the planes are removed
  2700. so that you can look through the cube in the direction from which the cube
  2701. was created.
  2702.  
  2703. The following fields:
  2704.  
  2705. - No 1st BP
  2706. - No 2nd BP
  2707. - Infinite
  2708.  
  2709. of the Attributes requester affect only primitives: those properties are
  2710. not inherited in the hierarchy. Conversely, you can make any complex
  2711. object e.g. "Hollow or WF-Invisible".
  2712.  
  2713. The "WF-Invisible" function is needed when, for example, the outcome of a
  2714. Boolean operation needs editing. All unwanted details, like slight
  2715. roundings of the edges of a cube, should be made invisible to make the
  2716. wireframe rendering faster.
  2717.  
  2718. The "Protected" flag locks the object so that any modification does not
  2719. affect it. This can be useful in animations for example.
  2720.  
  2721.                              - TUTORIAL 4.23 -
  2722.  
  2723. 4.3.1 Infinite Primitives
  2724.  
  2725. REAL 3D includes many primitives which can be expanded to infinite shapes
  2726. in a natural way. For example, a cylinder is a body bounded by a cylindric
  2727. surface and two plane surfaces.
  2728.  
  2729. Such primitives can be made "Infinite" using Modify/Properties/
  2730. Attributes/Infinite gadget. Applying this function makes three dimensional
  2731. primitives infinitely long and plane primitives infinitely wide.
  2732.  
  2733. To create an infinitely long cylinder:
  2734.  
  2735. 1. Create a cylinder.
  2736.  
  2737. 2. Choose menu Modify/Properties/Attributes.
  2738.  
  2739. 3. Set the Infinite field on and choose OK.
  2740.  
  2741. The wireframe of the cylinder is not changed, but if you render an image
  2742. of the object you will notice that it is infinitely long.
  2743.  
  2744. Plane primitives (polygons, disks, and ellipsoids) are automatically made
  2745. infinite when they are used in Boolean operations, unless their "Hollow"
  2746. attribute is set; then they act as two dimensional thin surfaces.
  2747.  
  2748. 4.4 SPECIAL FUNCTIONS
  2749.  
  2750. 4.4.1 Use of Animation Methods for Creation
  2751.  
  2752. Read this Chapter 4.4.1 after getting acquainted with the basic features
  2753. of the REAL 3D animation system.
  2754.  
  2755. The flexible animation system of REAL 3D can be used as a modelling tool
  2756. in many different ways. The following example, creating a chain of
  2757. objects demonstrates this:
  2758.  
  2759. 1. Create an object, for example a cube.
  2760.  
  2761. 2. Select the cube, then select menu Animate/Create/Direction, and draw
  2762.    a path starting from the cube.
  2763.  
  2764. 3. Select Modify/Properties/Animation, choose "CREATION" method from
  2765.    the method list and click OK.
  2766.  
  2767. 4. Find the original cube from the hierarchy (it is under the level whose
  2768.    animation type you just changed to CREATION) and select it.
  2769.  
  2770. 5. Select Modify/Properties/Tags, click ADD, type "SCRE I=1", hit <return>
  2771.    and select OK. This adds the creation condition tag to the cube.
  2772.  
  2773. 6. Open Animation window, set "Resolution" field to the number of cube
  2774.    copies you want to create along the path and play the animation.
  2775.  
  2776. 7. Delete the creation method level.
  2777.  
  2778. Support example:
  2779. Examples/Objects/cubesource.
  2780.  
  2781.                              - TUTORIAL 4.24 -
  2782.  
  2783. 4.4.2 COG Modifications
  2784.  
  2785. In addition to ordInary "linear" modifications found in the menu Modify/
  2786. Linear , REAL 3D includes two sets of "component" modifications: "COG"
  2787. modifications and "About COG" modifications.
  2788.  
  2789. For example:
  2790.  
  2791. 1. Use a macro to create a row of cubes.
  2792.  
  2793. 2. Multi-select the cubes, select Modify/About_COGs/Size 3D, click in the
  2794.    middle of one of the cubes and resize it. The rest of the cubes are
  2795.    resized similarly around their middle (COG) points.
  2796.  
  2797. 3. Select Modify/COGs/Rotate, click in the middle of the cube row and
  2798.    rotate it. The cube row is rotated, but each cube maintains its local
  2799.    orientation.
  2800.  
  2801. Figure T4-25: COG modifications  (PICTURE: T4-25)
  2802.  
  2803. For example, you can use About - COGs/Size 3D to resize the objects you
  2804. have used in Object_Pixel Tool, or leaves of a fractal tree (it is a good
  2805. idea to use Modify/Properties/COG function to set the COG to a suitable
  2806. position before using the object with the above mentioned tools; this
  2807. makes after-processing easier and more controlled).
  2808.  
  2809.                              - TUTORIAL 4.25 -
  2810.  
  2811. Chapter 5 RENDERING
  2812. -------------------
  2813.  
  2814. In this chapter we will learn about the rendering engine which is a very
  2815. flexible and sophisticated part of REAL 3D. This part of the software
  2816. renders images of your scenes using the so called ray tracing principle.
  2817. The surfaces of the objects that you have created in the editor are
  2818. coloured by creating a mathematical model of reality around them. In this
  2819. model light rays are emitted from light sources and then reflected from
  2820. object to object until they hit a place which causes vision: your eye
  2821. (the camera).
  2822.  
  2823. You will find that rendering in REAL 3D is very flexible and quite easy
  2824. to learn. From simple draft mode to full ray tracing, you are able to
  2825. employ the most suitable modes for your rendering needs. The first
  2826. tutorial chapters mainly used draft rendering mode without colours, now
  2827. we will explore more exciting rendering modes:
  2828.  
  2829. To render a ray traced image of a group of different coloured spheres:
  2830.  
  2831. 1. Create the spheres.
  2832.  
  2833. 2. Find a suitable viewing point using the cursor keys.
  2834.  
  2835. 3. Select View/Render/HAM. REAL 3D opens the render setting requester with
  2836.    which you can select: rendering accuracy, picture size, etc. Now change
  2837.    the "Mode" field to "Lampless" and select OK.
  2838.  
  2839. 4. If you want to save the picture after it has rendered in the HAM
  2840.    window, use Project/Environment/Save Screen function.
  2841.  
  2842. 5. Use Project/Environment/Close_Current to get back to the original
  2843.    screen, or you could leave the HAM screen open and edit the scene
  2844.    there. You can use <LAM>m to jump between the screens.
  2845.  
  2846. Note:
  2847. If you have started rendering and for some reason you want to stop,
  2848. select Extras/Cancel All or hit the space bar.
  2849.  
  2850. 5.1 LIGHTING SETTINGS
  2851.  
  2852. The following gadgets of the render setting requester affect the light
  2853. balance and brightness of the image:
  2854.  
  2855. Ambient: These gadgets define the amount of diffused reflected light that
  2856. is present in the scene. A good real world example of a diffuse reflecting
  2857. surface is a white wall in an unlit room on a cloudy day. In the world of
  2858. REAL 3D this light is called ambient light. The greater you set the
  2859. ambient light intensity , the less contrast there is between lit and the
  2860. shadowed surfaces of the objects.
  2861.  
  2862. Brightness: The intensities of the light sources can be set to a proper
  2863. level with the brightness gadget. When you create light sources in
  2864. REAL 3D, you don't have to pay attention to their brightness since the
  2865. differences in intensities will be automatically scaled to the appropriate
  2866. levels. The scaling is based on the amount of light these light sources
  2867. cast on the scene, the brightness ratios of the light sources are
  2868. preserved. The outcome of the scaling depends on the value of the
  2869. brightness control.
  2870.  
  2871. Overlight: This gadget defines what happens in the bright parts of the
  2872. picture. If overlight is zero, even the colour of the brightest objects
  2873. does not turn to white. On the other hand, if you start to increase the
  2874. overlight value, you get more and more overexposed pictures.
  2875.  
  2876. Autoexposure: This field sets on the automatic scaling of light sources.
  2877. Then the brightness of the picture is determined on the overall brightness
  2878. of the scene. This option can be compared with a automatic exposure
  2879. function of a camera. This feature is active by default.
  2880.  
  2881.                              - TUTORIAL 5.1 -
  2882.  
  2883. 5.2 COLOR/IMAGE SETTINGS
  2884.  
  2885. Background: These 3 gadgets specify the background colour for the picture.
  2886. You can set the RGB values by typing them into the numeric gadgets or by
  2887. using the Colours/Background local menu.
  2888.  
  2889. Backgr. grad: Selects the second background colour which is used for
  2890. gradients.
  2891.  
  2892. Backgr. gradient: When you activate the Backgr. gradient gadget, REAL 3D
  2893. will automatically render the image using the specified colour gradient
  2894. as a background.
  2895.  
  2896. Environment: The environment colour defines the colour of the surrounding
  2897. "space". Reflected light rays, which do not hit any visible objects, will
  2898. have this colour.
  2899.  
  2900. Envir. grad: The second environment colour used in environment gradients.
  2901.  
  2902. Envir. gradient: When you activate the Envir. gradient gadget, REAL 3D
  2903. will use a gradient to specify the colour of the surrounding space instead
  2904. of a fixed colour. The gradient starts from the Environment colour above
  2905. (at the "north pole") and ends to the Environment gradient colour below
  2906. (at the "south pole").
  2907.  
  2908. The background colours specify an artificial background for the image.
  2909. The colours do not interfere with the true objects in the scene. The
  2910. environment colours are the colours which are used in the actual ray
  2911. tracing calculations. The possibility of specifying these two colour
  2912. definitions separately gives extra flexibility, but also means that
  2913. incorrect settings can produce a clearly unrealistic or undesirable
  2914. results. Therefore, remember the following recommendations:
  2915.  
  2916. - If the scene contains transparent objects (especially when clip mapping
  2917.   is applied), the environment colour and the background colour should be
  2918.   equal, and neither gradient function should be used. If gradients are
  2919.   required, use e.g. a hollow 3D sphere around the scene with a suitable
  2920.   texture map.
  2921.  
  2922. - If the scene contains mirror-like objects but no transparent objects,
  2923.   the environment colours and the back ground colours should be equal.
  2924.   You can use the gradient functions if you use them both simultaneously.
  2925.  
  2926. Other combinations are sometimes useful for effect purposes (e.g. a shiny
  2927. golden logo type on a black background).
  2928.  
  2929. Note:
  2930. The Environment colours have importance only when the scene contains
  2931. reflecting/refracting objects.
  2932.  
  2933. Background colour can also be provided from an image file. This happens by
  2934. specifying the name of the image file to the Backdrop image string field
  2935. and by activating the corresponding gadget on the bottom right coiner of
  2936. the requester. This overrides the colour and gradient settings. The
  2937. backdrop image always fills the background completely and its size and
  2938. aspect ratio are adjusted accordingly.
  2939.  
  2940. Similarly , the "mathematical" environment colour map (a solid colour or
  2941. a gradient) can be replaced with an image file based environment map.
  2942. To do this, enter the name of the environment image file to the
  2943. "Environment map" string field and activate the corresponding "Environment
  2944. mapping" gadget. The image is mapped using spherical mapping to the
  2945. surrounding space: the top edge of the image will be mapped to a single
  2946. point at the "north pole" above, and the bottom edge of the image is
  2947. squeezed to the "south pole" below.
  2948.  
  2949.                              - TUTORIAL 5.2 -
  2950.  
  2951. If you have to contrOl the mapping type more accurately, create true 3D
  2952. objects around the scene (e.g. rectangular walls or a hollow sphere) and
  2953. texture map them appropriately.
  2954.  
  2955. Both the Environment map and the Backdrop image can be animated by simply
  2956. adding an index format string to the name. For example, if the backdrop
  2957. image name is "images/backpic%d", REAL 3D uses the name "images/backpic0"
  2958. in the first frame, and increments the index in each frame by one.
  2959.  
  2960. 5.3 RENDERING QUALITY SETTINGS
  2961.  
  2962. The following gadgets of the render settings requester affect image output
  2963. quality.
  2964.  
  2965. Anti-aliasing: You can select a suitable level of anti-aliasing using the
  2966. Anti-aliasing gadget. The effect of this function is that jaggies caused
  2967. by insufficient picture resolution are smoothed using colour gradients.
  2968. If the value is 0, no anti-aliasing is done, but if the value is 2 or 3,
  2969. you get quite nice smooth pictures. The only disadvantage is that
  2970. rendering gets slower as the anti-aliasing factor increases. If the
  2971. rendering is done in 24 bit, increasing the factor may give a visible
  2972. improvement in the picture quality. Normally, there is no need to use a
  2973. higher anti-aliasing value than 4. The Draft and Outline rendering modes
  2974. do not support anti-aliasing.
  2975.  
  2976. Resolution: The resolution gadgets specify the resolution of the rendered
  2977. picture, that is, how many picture elements are rendered with a single
  2978. calculated point. This function is useful for previewing. Using lower than
  2979. 1 by 1 resolution, for instance 2 x 2, speeds up the rendering and gives
  2980. you a quick visual representation of the scene.
  2981.  
  2982. Width and Height: It is possible to define the size of the image to be
  2983. rendered using Width and Height fields.
  2984.  
  2985. When the rendering output target is a View window, the gadgets only
  2986. display the current dimensions. When the rendering target is an external
  2987. screen, the dimensions are truncated to fit the external screen size;
  2988. smaller sizes can be specified. When the target is a disk file (in IFF/
  2989. Targa/BMP formats), the picture size is limited only by the operating
  2990. system of the Amiga: under Workbench 2.0 or greater the theoretical
  2991. maximum is 32768 * 32768 pixels.
  2992.  
  2993. 5.4 RAY TRACING QUALITY SETTINGS
  2994.  
  2995. The render settings requester includes some adjustments which control the
  2996. accuracy which the rendering engine uses in ray tracing calculations.
  2997.  
  2998. Recursion depth: The recursion depth field defines how far light rays are
  2999. traced when they reflect from surface to surface. i this field has a
  3000. value of three for example, then only the first three reflections of any
  3001. light ray can have any effect on the environment. When an object does
  3002. not contain any reflecting or transparent bodies this field does not have
  3003. any meaning. If your object contains transparent and reflective materials,
  3004. the bigger the value of this field the better and the more realistic the
  3005. result. Unfortunately , the rendering time may increase dramatically, so
  3006. it is best to keep it as small as possible. For example, if your target
  3007. includes one glass sphere, recursion depth of 3 is probably enough. If
  3008. your model represents two glass balls and you are looking through both of
  3009. them at the same time, recursion depth must be at least five.
  3010.  
  3011. Mat. samples: when using non-homogeneous transparent materials, this value
  3012. defines how densely the material properties are sampled. Usually the value
  3013. can be zero. Some effects will improve with a value 1.
  3014.  
  3015.                              - TUTORIAL 5.3 -
  3016.  
  3017. Only some special simulations (e.g. gas clouds) may require higher values.
  3018.  
  3019. Subdivision: B-Spline shading quality. The default value 2 is suitable for
  3020. most purposes. The higher the value, the "smoother" and better quality
  3021. shading, but rendering time will increase. The Subdivision value also
  3022. defines the subdivision density when converting B-Spline meshes to Phong
  3023. or polygon shaded surfaces. This happens when the Draft and Outline
  3024. rendering modes are used or when the B-Spline->Phong gadget is activated.
  3025. Usually the 0 or 1 level subdivision is sufficient; higher values consume
  3026. significant amounts of RAM.
  3027.  
  3028. 5.5 RENDERING MODES
  3029.  
  3030. Mode/Draft: When Draft mode is used, rendering is executed using the so
  3031. called draft mode. Here all the objects are converted to a white basic
  3032. material which is neither mirror-like nor transparent. It also does not
  3033. have any texture. The rendering is done using a single light source that
  3034. is in the same place as the observer. The output is always in grey scale.
  3035.  
  3036. Draft mode is the fastest ray tracing mode in REAL 3D. Although the speed
  3037. is partly obtained by simplifying the model, the mode is adequate for many
  3038. purposes such as; previewing before final rendering, or the representation
  3039. of technical objects. In the latter example, shadows and reflections may
  3040. cause unwanted visual confusion. Fast mode, in combination with a high
  3041. resolution, offers an excellent alternative for producing clear and
  3042. detailed graphics. Mode/Normal: When the Normal mode is set, a complete
  3043. model is used. The rendered picture will have shadows, reflections, etc.
  3044.  
  3045. Mode/Shadowless: In this mode rendering is done as in the previous mode
  3046. with one exception: the shadows of objects are not calculated. This makes
  3047. rendering considerablely faster. The mode is especially suitable for
  3048. animation production.
  3049.  
  3050. Mode/Lampless: This mode is even faster than shadowless mode. One
  3051. automatically inserted light source placed at the view point is used.
  3052. Textures, properties of materials, etc. are all taken into account.
  3053.  
  3054. Mode/Environment: This mode is almost as fast as the Draft mode. It is
  3055. equal to the Lampless mode except that the reflection calculations take
  3056. only the Environment colour/gradient or Environment map into account.
  3057. The result is that the rendering time is quite constant regardless of
  3058. the complexity of the scene, typically from 1 to 1 5 minutes per image.
  3059. Nevertheless, some realism is lost, especially when the scene contains
  3060. transparent objects.
  3061.  
  3062. Mode/Outline: the Outline mode renders a contour picture of the object
  3063. which is a hidden line wire frame image.
  3064.  
  3065. Note:
  3066. If you use Normal or Shadowless mode, remember to create a light source
  3067. to illuminate your object. Otherwise all the objects in your picture
  3068. would have only ambient light.
  3069.  
  3070.                              - TUTORIAL 5.4 -
  3071.  
  3072. 5.6 DITHERING
  3073.  
  3074. Dithering is a method to increase the number of colours available by
  3075. mixing existing colours. Dithering works best in high resolution
  3076. pictures. You can choose between different dithering methods using the
  3077. Dithering cycle gadget. The first dithering method, None, switches
  3078. dithering off. The second dithering type, Rnd RGB (Rnd = Random), uses a
  3079. separate random deviation for each of the R, G, and B components.
  3080.  
  3081. The third dithering type, Rnd intensity, adds the same random deviation
  3082. to each colour component.
  3083.  
  3084. The next dithering method, Fixed rnd int, also adds the same random
  3085. deviation to each colour component, but the dithering pattern is kept
  3086. the same in each rendered image. This means that when rendering
  3087. animations, the dithering pattern does not "move", and delta compression
  3088. methods work better. This is the default method.
  3089.  
  3090. Row dithering mixes the colours linewise, not pointwise, thus giving
  3091. slightly faster rendering and better image compression.
  3092.  
  3093. Raster dithering mixes the colours using regular geometric patterns.
  3094.  
  3095. The best one for you depends on the application. Usually, random dithering
  3096. gives a good impression of "rough" surfaces, whereas no dithering or
  3097. raster dithering produce "sharper and clearer" images. Line dithering is
  3098. usually not suitable for interlaced video applications, but it can be used
  3099. as a "style" effect for printed images.
  3100.  
  3101. The Dither scale slider can be used to define the maximum amount of colour
  3102. deviation in dithering. The default value is 64 and the maximum is 256.
  3103. The higher the value, the more mixed colours you get.
  3104.  
  3105. Note:
  3106. That 24 bit rendering output does not use dithering.
  3107.  
  3108. 5.7 SPECIAL SETTINGS
  3109.  
  3110. HL-Shade: This option offers an alternative shading mode. The default
  3111. shading mode maintains the proportions of the RGB colour signals when
  3112. calculating different shades for the colour of an object. This principle,
  3113. which is theoretically correct, does not always produce good looking
  3114. pictures when using a limited number of colours and outputting the image.
  3115. This happens especially when colours are not pure, that is, when there are
  3116. not significant differences between R-, G-, and B- components. HL-Shade
  3117. uses additive method instead of proportional method: all the RGB-
  3118. components are changed as many units between consecutive shades of a
  3119. colour. The original colour may distort, but the result is fine.
  3120.  
  3121. Pixel h/w: This gadget allows the user to define the pixel aspect ratio
  3122. pixel height/pixel width for rendering. If a value 0 is given, then the
  3123. program uses default ratios (for example in LORES-HAM-INTERLACE this
  3124. default aspect ratio for PAL is 0.5). If a nonzero value is given, then
  3125. it replaces the default pixel aspect ratios.
  3126.  
  3127. DOF scale and DOF Strength: These values define the depth of field of the
  3128. image. If either is zero, the picture will be sharp everywhere (a pinhole
  3129. camera). The higher the values, the more "blurred" the image you get.
  3130. DOF scale is a distance-related adjustment: it specifies how quickly the
  3131. image goes
  3132.  
  3133.                              - TUTORIAL 5.5 -
  3134.  
  3135. out-of-focus in front of and behind the sharp zone in the scene. 1.0 is a
  3136. good default value. DOF strength specifies the maximum amount of DOF blur
  3137. in the image. Typically, the value 2 is quite suitable.
  3138.  
  3139. Note:
  3140. Draft and Outline modes do not use the DOF feature.
  3141.  
  3142. No bgr. antial.: When this gadget is set, REAL 3D does not anti-aliase
  3143. object colours with the background colour. This is necessary when the
  3144. computer generated image will be combined with video backgrounds. See also
  3145. the example "Using Alpha Channel" later in this chapter.
  3146.  
  3147. Alpha output: Activates alpha channel output. The alpha information can be
  3148. written to the external screen or to a disk file. See the example "Using
  3149. Alpha Channel".
  3150.  
  3151. Field rendering: When this gadget is set, the renderer calculates every
  3152. odd frame half a pixel lower. This feature is designed for producing the
  3153. interlaced fields of e.g. the PAL video standard. See the example
  3154. "Rendering Fields" in this chapter.
  3155.  
  3156. 5.8 HIERARCHY AND RENDERING
  3157.  
  3158. If two objects overlap, then their materials are not blended, but one
  3159. object replaces the other in the space occupied by both. During rendering,
  3160. this is significant only when it is possible to see inside the overlapping
  3161. space, that is, when transparent materials are used (or when a boolean
  3162. cuts the overlapping spice). For example: if a metal sphere is inside a
  3163. fog cloud, and the fog cloud has a higher priority, then the metal sphere
  3164. is not visible. If the priority is reversed, the metal sphere can be seen
  3165. through the fog.
  3166.  
  3167. 5.9 RENDERING A WIREFRAME PREVIEW OF AN ANIMATION
  3168.  
  3169. As a first example of rendering animations, we will consider the fast
  3170. wireframe preview. To verify the quality of the motions, you need 25 fps
  3171. (PAL) or 30 fps (NTSC) playback speed, which is not possible
  3172. interactively. Therefore, you have to save the wireframe images to disk
  3173. and then create a delta file which can be played at the desired speed.
  3174.  
  3175. Do the following:
  3176.  
  3177. 1. Create/Load the animation.
  3178.  
  3179. 2. Use Project/Environment/Open screen to open a screen with suitable
  3180.    properties. As this is going to be only a motion preview, we recommend
  3181.    that you use for example 1 or 2 deep HIRES screen.
  3182.  
  3183. 3. Select Project/Windows/View Borderless; this opens a full screen
  3184.    window.
  3185.  
  3186. 4. Close other REAL 3D screens and windows.
  3187.  
  3188. Note:
  3189. that you can perform the steps 2-4 by replacing the environment
  3190. (Project/Environment/Replace) with a ready-made wireframe preview
  3191. interface.
  3192.  
  3193.                              - TUTORIAL 5.6 -
  3194.  
  3195. 5. Open the animation window and set its gadgets as specified in the
  3196.    following steps.
  3197.  
  3198. 6. Set Time to zero by: moving the Time slider or by entering the time
  3199.    value to the Time gadget.
  3200.  
  3201. 7. Select the screen to be saved by clicking the name of the screen you
  3202.    opened in the screen name list gadget (REAL 3D may already proposed
  3203.    the correct screen name on the "Saved" string gadget below the list).
  3204.  
  3205. 8. Set the Wireframe/Ray trace cycle gadget to "Wireframe".
  3206.  
  3207. 9. Specify a Screen file name with a full path (e.g. "R3d2:images/
  3208.    wireimage"). Verify also that the Format string is suitable.
  3209.    The default "%d" is suitable for the REAL 3D deltaconverter.
  3210.  
  3211. 10. Enter the amount of frames you want to render to the Resolution field.
  3212.     Use the same amount of frames as you plan to use with the final
  3213.     production, for example 200 frames.
  3214.  
  3215. 11. Activate the Save gadget.
  3216.  
  3217. 12. Press the play animation gadget "..>|" and wait until the animation is
  3218.     played and saved to the end (you can see it from the time value).
  3219.  
  3220. 13. Use the Deltaconvert program to create a delta animation as specified
  3221.     in the Appendix "Utility Software". Then delete the original frames
  3222.     and use Delta Play to play the delta-animation.
  3223.  
  3224. It is strongly recommended that you always create a wireframe preview of
  3225. your production before final rendering.
  3226.  
  3227. 5.10 RENDERING AN ANIMATION
  3228.  
  3229. When you want to render an animation using ray traced shading, follow the
  3230. steps of the previous example 5.9, except that in the step 8, select "Ray
  3231. trace" instead of wireframe. Otherwise the procedure is the same.
  3232.  
  3233. You can specify the image format to be used by opening a suitable screen.
  3234. For example, you may open a LORES-HAM-Overscan screen, or a 16 colour
  3235. HIRES-Interlace greyscale screen.
  3236.  
  3237. Usually it is best to use one screen with a borderless window as in the
  3238. previous wireframe example. REAL 3D always saves the whole screen, the
  3239. contents of individual windows cannot be saved separately. If you want to
  3240. render small images, open a screen with small dimensions and use a
  3241. borderless window. For example, to render a shaded miniature-size HAM
  3242. preview of an animation:
  3243.  
  3244. 1. Use Project/Environment/Open Screen to open a HAM screen. Set the Width
  3245.    e.g.to 160 and the Height to 128 (or to 100 NTSC) before opening the
  3246.    screen. Then use Project/Windows/View Borderless to open a full screen
  3247.    window.
  3248.  
  3249. 2. Close other REAL 3D screens and windows.
  3250.  
  3251. 3. Open the animation window, define the HAM screen to be the saved one,
  3252.    reset the time, specify the screen file name, select Ray trace shading
  3253.    and activate the Save gadget. You may use lower frame resolution this
  3254.    time because the wireframe animation preview has already shown the
  3255.    motions. The purpose of this preview is to check the shading.
  3256.    Rendering one fourth of the final frames is a suitable sample for shade
  3257.    checking. Enter e.g. 50 frames to the Resolution field.
  3258.  
  3259.                              - TUTORIAL 5.7 -
  3260.  
  3261. 4. Render the animation and Delta convert and then Deltaplay.
  3262.  
  3263. It is strongly recommend that you always create shaded previews of your
  3264. productions before final rendering. Using 1/4 of the final frames and
  3265. 1/20th of the full video resolution, this preview rendering time may be
  3266. only 1% of the final rendering time.
  3267.  
  3268. 5.11 RENDERING TO A FILE
  3269.  
  3270. It is possible to render an image directly to a disk file. This may be
  3271. necessary if the image resolution is very high (for example more than
  3272. normal video resolution). Secondly, this makes it possible to create 24
  3273. or 32 bit graphics without having a special frame buffer or other such
  3274. display device.
  3275.  
  3276. File rendering is selected by setting the Output cycle gadget to one of
  3277. the "file" targets. This selects 24 bit rendering and the image is
  3278. constructed using over 16 million colours. The renderer writes the image
  3279. directly to disk with the file name defined in the "File" string field
  3280. and appended by the index specified in the index format string of the
  3281. animation window. As usual, remember to add a suitable directory path at
  3282. the beginning of the file name, otherwise the images are saved to the
  3283. current directory.
  3284.  
  3285. Note:
  3286. 24 bit rendering can create large files, for example, a picture with
  3287. 1024*1024 pixels may require three megabytes. The file format alternatives
  3288. currently available are:
  3289.  
  3290. Output/IFF file: The IFF-24 field selects compressed 24-bit IFF ILBM
  3291. format output in rendering.
  3292.  
  3293. Output/Targa file: The file format REAL 3D uses is the true colour Targa
  3294. format which is a popular standard on IBM PC compatible systems.
  3295.  
  3296. Output/BMP-file: This gadget selects BMP format output which is also a
  3297. popular format on the IBM PC compatible platform.
  3298.  
  3299. The following example describes how to render an animation in 24-bit
  3300. directly to a disk file.
  3301.  
  3302. 1. Create/Load the animation.
  3303.  
  3304. 2. Modify the environment for rendering: leave only one View window open
  3305.    and open the animation window.
  3306.  
  3307. 3. Activate the View and hit <RAM>s to open the render settings requester.
  3308.  
  3309. 4. Set "Output" to IFF file.
  3310.  
  3311. 5. Enter the name for the images to the "File" field.
  3312.  
  3313. 6. Define the size of the image in the Width and Height gadgets, for
  3314.    example: 736*564 (PAL) or 736*482 (NTSC) pixels.
  3315.  
  3316. 7. If the default aspect ratio 1.0 is not suitable, enter the exact value
  3317.    to the "Pixel h/w" gadget.
  3318.  
  3319. 8. Modify other settings to suit and select OK to close the requester.
  3320.  
  3321.                              - TUTORIAL 5.8 -
  3322.  
  3323. 9. Adjust the camera position and the scale of the View window. The disk
  3324.    file will include exactly the same view of the scene as you see in the
  3325.    window. If you have created a camera object (possibly an animate one),
  3326.    activate the View/Observer/Camera view feature to make sure that the
  3327.    camera settings will be used.
  3328.  
  3329. 10. Next define the animation window settings: reset the time to zero,
  3330.     enter a suitable amount of frames to the Resolution field, and check
  3331.     the index format string. Select "Ray trace" shading. You do NOT have
  3332.     to specify a screen to be saved, nor a screen file. DON'T activate the
  3333.     Save gadget, unless you really want to save BOTH wireframe images from
  3334.     the screen AND the 24 bit images.
  3335.  
  3336. 11. Press the "..>|" gadget to render the animation.
  3337.  
  3338. The essential steps of the file rendering are the steps 4, 5 and 6.
  3339. Especially remember to check the image size because the Output cycle
  3340. gadget automatically adjusts. The second important, to avoid double
  3341. saving, is to not activate the Save gadget of the animation window.
  3342.  
  3343. Note:
  3344. The View window displays the contents of the disk file image always in
  3345. horizontal direction; if the window shape is different from the image
  3346. file shape, the vertical contents may be different. For example, if your
  3347. View window has the shape of the monitor display and its width is greater
  3348. than its height, and you define an image file of 800*800 pixels with the
  3349. aspect ratio 1, then the file image is a square, and therefore a wider
  3350. vertical area of the scene is included in the rendered file image.
  3351.  
  3352. 5.12 CONTINUING A CANCEELLED RENDERING PROCESS
  3353.  
  3354. When you start rendering an animation it is a good idea to save the whole
  3355. project just before pressing the play gadget of the animation window.
  3356. If you have to cancel the rendering, it is then easy to continue again by
  3357. reloading the project if necessary.
  3358.  
  3359. If you have cancelled rendering an animation, but you want to continue
  3360. rendering:
  3361.  
  3362. 1. Load the animation (Project/Project/Replace)
  3363.  
  3364. 2. Open the animation window.
  3365.  
  3366. 3. If you are using particle animation methods, set the "Play to/Jump to"
  3367.    cycle gadget to "Play to". This is necessary because particle
  3368.    animations must be regenerated frame by frame in order to get a certain
  3369.    state back; you cannot jump directly in time. In other types of
  3370.    animations you can select "Jump to" to go to the desired point in time.
  3371.  
  3372. 4. Select "Wireframe" shading instead of "Ray trace".
  3373.  
  3374. 5. Make sure that the "Save" gadget is not selected.
  3375.  
  3376. 6. Check the index of the last frame that has already been rendered; enter
  3377.    the next index value to the "Frame" field and hit <RETURN>. The
  3378.    animation is played to that frame. Using the wireframe shading, it will
  3379.    get to the desired point quickly.
  3380.  
  3381.                              - TUTORIAL 5.9 -
  3382.  
  3383. 7. Change "Wireframe" to "Ray trace", activate the Save gadget (unless
  3384.    you are rendering to file, see the example 5.11) and press the play
  3385.    button.
  3386.  
  3387. You can also save the project at the time the rendering was cancelled,
  3388. and then reload the project back later and just press the play button to
  3389. continue rendering. It is usually best to keep a copy of the project in
  3390. its initial state (particle animations cannot be "rewound" back to the
  3391. beginning).
  3392.  
  3393. 5.13 RENDERING TO AN EXTERNAL SCREEN
  3394.  
  3395. REAL 3D contains a well designed interface for easy access to frame buffers
  3396. and other custom display devices directly from REAL 3D.
  3397.  
  3398. To use custom display devices, you need a special interface library for
  3399. the particular device. REAL 3D software package contains a collection of
  3400. such libraries included in the "Accessories" directory. There are more
  3401. available in Public Domain and from hardware manufacturers.
  3402.  
  3403. Note:
  3404. That REAL 3D interface libraries are not the libraries which are written
  3405. for the display devices themselves: for example, there exist a
  3406. "harlequin.library", but the correct REAL 3D interface library is called
  3407. "hr_r3d. library".
  3408.  
  3409. In the REAL 3D user interface, display devices are accessed using a so
  3410. called "External screen". When using the external screen, the first step
  3411. is to install the correct library:
  3412.  
  3413. 1. Copy the desired REAL 3D interface library from "r3d2:Accessories"
  3414.    drawer to your libs: directory.
  3415.  
  3416. Of course, the display device itself must first be installed properly.
  3417. For example, when using Harlequin, install the board into the machine
  3418. according to the manufacturers directions and copy "harlequin.library"
  3419. to "libs: directory". Then copy "accessories/hr_r3d.library" to "libs:".
  3420.  
  3421. 2. Select Project/External Screen/Settings menu in REAL 3D.
  3422.  
  3423. 3. Type the name of the interface library, e.g. "hr_r3d.library".
  3424.  
  3425. Note:
  3426. The library name may be case sensitive! Therefore, use capital letters
  3427. only if the original name was written in capital letters.
  3428.  
  3429. 4. Select a suitable saving format. This format is used when you select
  3430.    Project/External Screen/Save or when you render animations with the
  3431.    save option. The default format, IFF 24, is a good choice. Then select
  3432.    OK.
  3433.  
  3434. 5. Select Projects/External Screen/Open. Something visible may or may
  3435.    not happen, depending on how the display device works.
  3436.  
  3437. 6. You may try to use Project/External Screen/Set Modes function. If the
  3438.    device supports multiple modes, you should get some kind of mode
  3439.    selector. If something has gone wrong and the external display opening
  3440.    was not successful, you will get an error message telling you that the
  3441.    external screen is not opened.
  3442.  
  3443.                              - TUTORIAL 5.10 -
  3444.  
  3445. If the opening failed, check the following:
  3446. - Is the device hardware properly installed
  3447. - Are all the necessary libraries copied to libs:
  3448. - Read the readme file of the interface library (check "Accessories"
  3449.   drawer)
  3450. - Check that you typed the library name correctly, try typing in lowercase
  3451.   letters only.
  3452.  
  3453. If the opening was successful, you can render to the external screen in
  3454. the following way:
  3455.  
  3456. 7. Choose one of the view windows to be used as a handle to the external
  3457.    screen. Open the render settings requester of the view.
  3458.  
  3459. 8. Set Output cycle gadget to External. Width and Height Gadgets should
  3460.    automatically change to the new dimensions which correspond to the
  3461.    full external screen size. You may change them to smaller numbers if
  3462.    you do not want to get a full screen rendering.
  3463.  
  3464. 9. Select other rendering settings and select OK.
  3465.  
  3466. 10. Find a good viewing angle (or camera position) in the view and start
  3467.     rendering by hitting <RAM>r.
  3468.  
  3469. The shaded image in eternal screen will contain the same image as the
  3470. wireframe representation shows in the handle view. If the width to height
  3471. proportion of the view is different from that of the external screen, both
  3472. images will show the same horizontal width but the vertical height will
  3473. differ. To get an exact representation in the View window of the image to
  3474. be rendered to the external screen, you must have the same width to height
  3475. ratio.
  3476.  
  3477. After rendering, you can save the image using Project/External Screen/Save
  3478. function; this displays the file requester with which you can define a
  3479. suitable file name for saving. Before saving, you can also choose the
  3480. image format to be used using External Screen/Settings menu; currently
  3481. IFF 24, True colour Targa 24, and 32 (alpha included) are supported.
  3482. The fourth format, Custom, is device dependent. Check the interface
  3483. library specific docs for more information.
  3484.  
  3485. Note:
  3486. That the Save function always saves the full external screen regardless
  3487. of its contents (partial screen rendering, box rendering, etc.).
  3488.  
  3489. You can use External Screen/Close function to close the screen when other
  3490. programs need to access the display device. REAL 3D closes the screen
  3491. automatically when you exit the program.
  3492.  
  3493. The Eternal screen library name and other settings can be saved as a part
  3494. of your real-startup environment.
  3495.  
  3496. 5.13.1 Rendering an Animation Using External Screen
  3497.  
  3498. When you want to render an animation to hard-disk using an eternal screen,
  3499. do the following:
  3500.  
  3501. 1. Create/load the animation project.
  3502.  
  3503. 2. Open the external screen as presented in the previous example.
  3504.  
  3505.                              - TUTORIAL 5.11 -
  3506.  
  3507. 3. To maximize the rendering speed, leave only one view window open and
  3508.    use View/Render/Settings to choose suitable rendering options. Set the
  3509.    Output cycle gadget to External screen.
  3510.  
  3511. 4. Use External Screen/Settings to select the desired saving format
  3512.    (default IFF 24 is probably OK).
  3513.  
  3514. 5. Open the animation window. Set the time to 0.0 (default).
  3515.  
  3516. 6. "Screens" selector of the animation window should contain "External".
  3517.    Click "External" or type the name to the "Saved" string gadget below
  3518.    the screen name list.
  3519.  
  3520. 7. Activate the Save gadget (unless you are going to single frame record
  3521.    the images directly using a frame command).
  3522.  
  3523. 8. Verify that the drawing method is Ray trace, not wire frame.
  3524.  
  3525. 9. Type the full name for file saving (including path) to "Screen file"
  3526.    gadget.
  3527.  
  3528. 10. Adjust other animation settings (e.g. frame resolution).
  3529.  
  3530. 11. Press the play animation gadget "..>|".
  3531.  
  3532. Each frame is rendered first to the external screen, then it is saved to
  3533. a disk file. The advantage is that you can monitor how the rendering
  3534. proceeds and cancel the rendering if the result is not expected (we
  3535. recommend a low resolution HAM preview before final rendering) The
  3536. disadvantage is that the data transfer to and from the external screen may
  3537. require extra time where as direct-to-disk file rendering will be a little
  3538. faster.
  3539.  
  3540. 5.13.2 External Screen Aspect Ratio
  3541.  
  3542. The latest interface library versions (v.40) includes automatic aspect
  3543. ratio support. When you render to the external screen, the pixel aspect
  3544. is automatically set to the correct value if the render settings aspect
  3545. ratio field is set to zero. You can overrule this auto-configured value
  3546. by typing any non-zero value to the aspect ratio field "Pixel h/w".
  3547.  
  3548. In older libraries (v.36), the default aspect was 1.0.
  3549.  
  3550. 5.13.3 Other Information
  3551.  
  3552. The external screen interface is quite general and different interface
  3553. libraries can work in various ways. Some devices require another monitor,
  3554. some use the same as the Amiga OS. Usually, one monitor systems work so
  3555. that when you start rendering the external screen pops up and disappears
  3556. again when you click it or cancel the rendering.
  3557.  
  3558. For example, the implementation of a mode query (Set Modes function) and
  3559. custom format saving can vary; both can be no-operation-at-all functions.
  3560. These details are usually specified in the interface library documents.
  3561. At the time of the initial release of REAL 3D V2 there are libraries
  3562. planned for the following devices:
  3563.  
  3564.                              - TUTORIAL 5.12 -
  3565.  
  3566. Devices:
  3567.  
  3568.      - Harlequin
  3569.      - VD2001
  3570.      - DCTV
  3571.      - Impact Vision
  3572.      - EGS
  3573.      - Visiona
  3574.      - Domino
  3575.      - Merlin
  3576.      - SAGE boards
  3577.      - Opal Vision
  3578.      - A-Video
  3579.      - Horizon
  3580.  
  3581. Note:
  3582. Most libraries are developed by other programmers.
  3583.  
  3584. The external screen can be used to also implement the standard Amiga based
  3585. rendering facilities. For example, it may be a disk file rendering
  3586. interface with multiple file format support, or just an Amiga screen with
  3587. desired properties (for example: EXTRA HALFBRITE screen or 5 bit colour
  3588. LORES screen with custom dithering algorithms).
  3589.  
  3590. A nice setup using two monitors and an external screen:
  3591.  
  3592. 1. Change the output target of one of your view windows to External,
  3593.    using Render settings requester. The rendering mode can be Environment.
  3594.  
  3595. 2. Select View/Drawing Set and set "Ray trc." gadget to activate automatic
  3596.    ray traced shading for the view.
  3597.  
  3598. Now you can continue using your interface as before and REAL 3D keeps on
  3599. rendering a new shaded image on the second monitor display, using idle
  3600. processor time available to do something useful.
  3601.  
  3602. 5.14 BOXES
  3603.  
  3604. With the box functions you can define a specific part of the display to
  3605. be rendered. The purpose is to allow you to quickly test render only
  3606. critical parts of the image without having to perform a full page render.
  3607.  
  3608. It is also possible to first quickly render the picture using a lower
  3609. resolution, define the boxes, and then render only the boxes using a
  3610. higher resolution.
  3611.  
  3612. For example:
  3613.  
  3614. 1. Create an object.
  3615.  
  3616. 2. Select View/Render/Settings and set X-Resolution = 4, Y-Resolution = 4,
  3617.    Anti-aliasing = 0, then select OK.
  3618.  
  3619. 3. Hit <RAM>r to get a quick render in the view window.
  3620.  
  3621. 4. Select View/Boxes/Define and shape a rectangle defining a "critical"
  3622.    part of the scene.
  3623.  
  3624. 5. Select View/Render/Settings, set X-Resolution = 1 , Y-Resolution = 1,
  3625.    Anti-aliasing = 2 and select OK.
  3626.  
  3627. 6. Select View/Render/Boxes. Only the box area is re-rendered and it is
  3628.    rendered with the higher resolution and anti-aliasing.
  3629.  
  3630. It is possible to have multiple boxes at the same time. You can modify and
  3631. delete the boxes individually; REAL 3D automatically names the boxes using
  3632. their creation order. Boxes/Delete All removes all the box definitions.
  3633.  
  3634.                              - TUTORIAL 5.13 -
  3635.  
  3636. Box definitions are window-specific: each View may has its own box list.
  3637.  
  3638. You can also use box function to divide the rendering of an image into
  3639. smaller sub-images which can be assembled later. This is useful for long
  3640. rendering times where the process must be cancelled. For example, to
  3641. render 4 sub-images of a 1024*1024 pixel 24-bit image to disk files:
  3642.  
  3643. 1. Create the scene and define the render settings for the View window to
  3644.    be used (Output = IFF file, file name etc.) Set image Width and Height
  3645.    to the full 1024*1024 size. Then save the project.
  3646.  
  3647. 2. Use View/Boxes/Define to define a box on the View. The size and
  3648.    location of the box do not matter.
  3649.  
  3650. 3. Select View/Boxes/Modify, select the box (there should be only one box)
  3651.    and enter Left edge = 0, Top edge = 0, Width = 512, Height = 512.
  3652.    Then select OK.
  3653.  
  3654. 4. Render the first quarter of the image using the View/Render/Boxes
  3655.    function.
  3656.  
  3657. 5. When the image is rendered, select View/Render/Settings and change the
  3658.    file name (for example, add "tr" postfix to it), so that the new image
  3659.    is not written over the first one.
  3660.  
  3661. 6. Select View/Boxes/Modify, select the box and enter Left edge = 512,
  3662.    Top edge = 0, Width = 512, Height = 512. Then select OK.
  3663.  
  3664. 7. Render the second quarter (use View/Render/Boxes).
  3665.  
  3666. 8. Repeat the previous steps for the two last quarters.
  3667.  
  3668.  
  3669.                 End Of Part 2
  3670.  
  3671.  
  3672.  
  3673.  
  3674.  
  3675.